我怎么能用字符串做同样的事情:
a = [1 2 3; 4 5 6];
c = [];
for i=1:5
b = a(1,:)+i;
c = [c;b];
end
c =
2 3 4
3 4 5
4 5 6
5 6 7
6 7 8
基本上希望将几个字符串组合成一个矩阵。
您正在循环中增加一个变量,这在 Matlab 中是一种罪恶 :) 所以我将向您展示一些更好的方法来进行数组连接。
有细胞串:
>> C = {
'In a cell string, it'
'doesn''t matter'
'if the strings'
'are not of equal lenght'};
>> C{2}
ans =
doesn't matter
您可以像这样在循环中使用它:
% NOTE: always pre-allocate everything before a loop
C = cell(5,1);
for ii = 1:5
% assign some random characters
C{ii} = char( '0'+round(rand(1+round(rand*10),1)*('z'-'0')) );
end
有普通数组,它的缺点是您必须事先知道所有字符串的大小:
a = [...
'testy' % works
'droop'
];
b = [...
'testing' % ERROR: CAT arguments dimensions
'if this works too' % are not consistent.
];
对于这些情况,请使用char
:
>> b = char(...
'testing',...
'if this works too'...
);
b =
'testing '
'if this works too'
注意如何char
用空格填充第一个字符串以适应第二个字符串的长度。再说一遍:不要在循环中使用它,除非你已经预先分配了数组,或者如果真的没有其他方法可以走。
在 Matlab 命令提示符下键入help strfun
以获取 Matlab 中可用的所有与字符串相关的函数的概述。
你的意思是在每个矩阵位置存储一个字符串?你不能这样做,因为矩阵是在基本类型上定义的。您可以在每个位置上都有一个 CHAR:
>> a = 'bla';
>> b = [a; a]
b <2x3 char> =
bla
bla
>> b(2,3) = 'e'
b =
bla
ble
如果要存储矩阵,请使用元胞数组(MATLAB 参考,Loren Shure 的博客),它们有点相似,但使用“{}”而不是“()”:
>> c = {a; a}
c =
'bla'
'bla'
>> c{2}
ans =
bla