我想了解这是否真的正确,或者这可能是matlab中的一个问题。
我通过以下方式创建一个字符串向量/数组:
>>a=['1','2';'3','4']
它返回:
a =
12
34
现在我想将内容从字符串转换为数字,并将其乘以数字:
>>6*str2num(a)
结果如下:
a =
72
204
我不明白为什么逗号分隔的元素(字符串)将被连接而不是分开处理。如果使用数字而不是字符串,它们将被分开处理。然后它看起来像这样:
>> a=[1,2;3,4]
a =
1 2
3 4
>> 6*a
ans =
6 12
18 24
我希望得到相同的结果。有什么想法吗?
由于
答案 0 :(得分:4)
您是否阅读了how string handling is done in MATLAB?
基本上,多个字符串只能存储为列向量(字符串)。如果尝试存储为行向量,它们将被连接。这就是字符串'1'
和'2'
被连接起来的原因,以及'3'
和'4'
。另请注意,只有在所有结果字符串长度相同的情况下才能实现这一点。
我不确定你要做什么,但如果你想将字符串存储为矩阵(即连续多个字符串),可以考虑将它们存储在单元格数组中,例如:
>> A = {'1', '2'; '3', '4'}
A =
'1' '2'
'3' '4'
>> cellfun(@str2num, A)
ans =
1 2
3 4
答案 1 :(得分:1)
我会说使用像@EitanT建议的单元格阵列可能是最适合你的解决方案。
但是,可以通过手动插入空格和排列字符数来处理字符串(或者更确切地说是字符)。
例如
>> a=['1 2';'3 4']
产生
a =
1 2
3 4
并使用
>> 6*str2num(a)
产生
ans =
6 12
18 24
使用
在矩阵和字符串之间转换b=[1,2;3,10000];
num2str(b)
自动插入空格,字符排列正确。这会产生
ans =
1 2
3 10000