示例程序如下:
a = {'1','2','19'};
b = zeros(1,3);
for i = 1:3
b(1,i) = cell2mat(a(1,i));
endb(1,i) = cell2mat(a(1,i));在上述语句时报错。“赋值具有的非单一 rhs 维度多于非单一下标数”查看b中数据:
>> b
b =
49 50 0原来a中数字是以字符形式存在的,在将其存储到matrix形式的b中时,存储的是其ASCII码,19没有对应的ASCII码,因此报错。
应该使用str2double或者str2num将其字符形式转变为数字形式。如下:
>> a = {'1','2','19'};
b = zeros(1,3);
for i = 1:3
b(1,i) = str2double(a(1,i));
end
>> b
b =
1 2 19
本文介绍了一段MATLAB程序在尝试将字符数组转换为数字矩阵时出现的错误及解决办法。通过使用`str2double`函数替代`cell2mat`,成功地将字符形式的数据转换为了数值形式,避免了ASCII码转换导致的问题。
6万+

被折叠的 条评论
为什么被折叠?



