我试图填写表格,但我收到以下错误: "下标分配维度不匹配"并且不知道如何解决这个问题,这是我的代码:
for i= 1:19
nom=strcat('App\africa\',int2str(i),'.jpg');
Table_Img(i,:)=nom;
end
我读了很多关于这个错误的讨论,但没有一个给定的解决方案解决了我的问题。谢谢你的回复。 PS:我使用matlab2011a
答案 0 :(得分:1)
检查
int2str(1) = '1'
int2str(10) = '10'
第一个是长度为1的字符串,而第二个长度为2.您不能在不触发尺寸不匹配错误的情况下将不同长度的字符串放入同一矩阵中。这就是你的例子中发生的事情。
您有多种选择。
一种选择是重命名文件,以便第一个文件为01.jpg
而不是1.jpg
然后你可以使用
sprintf('%02d.jpg',i)
而不是
int2str(i)
假设255个字符足以容纳文件名
Table_Img = zeros(19,255)
for i= 1:19
nom=strcat('App\africa\',int2str(i),'.jpg');
Table_Img(i,1:length(nom))=nom;
end
现在当你真正需要使用文件名时,最后修剪零。例如,使用find
函数仅从表中选择非零字符
nom = char(Table_Img(find(Table_Img(1,:))))
而不是
nom = Table_Img(1,:)
与第一个建议一样