MATLAB里单引号写出的是 char,双引号写出的是 string。两者都能表示文字,类型和行为并不相同。

c = 'hello'   % char:字符数组,1x5
s = "hello"   % string:字符串对象,1x1

char 是字符组成的数组,适合逐字符索引。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_scorex2 好懂。
  • 随机实验用 rng 固定种子,方便复现。

向量化与循环的对比

% 慢:循环
y = zeros(1, 100000);
tic
for i = 1:100000
    y(i) = i^2;
end
toc

% 快:向量化
tic
x = 1:100000;
y2 = x.^2;
toc

自己跑一遍,时间差往往差一个数量级。做大规模数值计算时,优先想能不能写成数组运算。