我怎么能用字符串做相同的事情:
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
基本上希望将几个字符串组合成一个矩阵。
答案 0 :(得分:3)
你在循环中增加一个变量,这在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中可用的所有字符串相关函数的概述。
答案 1 :(得分:1)
你的意思是在每个矩阵位置存储一个字符串?你不能那样做,因为矩阵是在基本类型上定义的。你可以在每个位置都有一个CHAR:
>> a = 'bla';
>> b = [a; a]
b <2x3 char> =
bla
bla
>> b(2,3) = 'e'
b =
bla
ble
如果要存储矩阵,请使用单元格数组MATLAB reference,Blog of Loren Shure),它们类似类似但使用“{}”代替“( )“:
>> c = {a; a}
c =
'bla'
'bla'
>> c{2}
ans =
bla