填充表时for循环中的下标分配维度不匹配

时间:2017-05-31 17:47:46

标签: matlab for-loop

我试图填写表格,但我收到以下错误: "下标分配维度不匹配"并且不知道如何解决这个问题,这是我的代码:

   for i= 1:19
    nom=strcat('App\africa\',int2str(i),'.jpg');
    Table_Img(i,:)=nom; 
   end

我读了很多关于这个错误的讨论,但没有一个给定的解决方案解决了我的问题。谢谢你的回复。 PS:我使用matlab2011a

1 个答案:

答案 0 :(得分:1)

检查

int2str(1) = '1'
int2str(10) = '10'

第一个是长度为1的字符串,而第二个长度为2.您不能在不触发尺寸不匹配错误的情况下将不同长度的字符串放入同一矩阵中。这就是你的例子中发生的事情。

您有多种选择。

1。使用长度为

的文件名

一种选择是重命名文件,以便第一个文件为01.jpg而不是1.jpg

然后你可以使用

sprintf('%02d.jpg',i)

而不是

int2str(i)

2。用零填充行。

假设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,:)

与第一个建议一样