MATLAB里单引号写出的是 char,双引号写出的是 string。两者都能表示文字,类型和行为并不相同。
c = 'hello' % char:字符数组,1x5
s = "hello" % string:字符串对象,1x1char 是字符组成的数组,适合逐字符索引。string 把整段文字当成一个对象,更适合整体比较和拼接。
string 更方便的地方
a = "hello"; b = "hello";
a == b % 1,string 可以直接 == 比较
% 字符串数组(双引号 + 数组)
words = ["apple" "banana" "cherry"];
words(2) % "banana"
upper(words) % 全部转大写,一次处理整批
% 拼接
str = "你好" + "世界" % "你好世界"用 + 拼接、用 == 直接比较、对字符串数组批量处理,通常比 char 省事。新代码可以优先用 string,除非明确要逐字符操作。
char 仍然常见
s = 'MATLAB';
s(2) % 'A',逐字符索引 char 更方便
class(s) % 'char'老代码、文件 IO、部分内置函数的返回值仍是 char。两种类型都会遇到,需要认得。
几条编程习惯
- 能向量化就少写循环:
x.^2通常比 for 循环快很多。 - 循环前先预分配:例如
y = zeros(1, n),避免数组边写边变长。 - 脚本里给不需要看的中间结果加分号,少刷屏。
- 可复用逻辑收成函数,少复制粘贴大段相同代码。
- 变量名写清楚用途,例如
total_score比x2好懂。 - 随机实验用
rng固定种子,方便复现。
向量化与循环的对比
% 慢:循环
y = zeros(1, 100000);
tic
for i = 1:100000
y(i) = i^2;
end
toc
% 快:向量化
tic
x = 1:100000;
y2 = x.^2;
toc自己跑一遍,时间差往往差一个数量级。做大规模数值计算时,优先想能不能写成数组运算。