Matlab 中的下标赋值维度与真实索引不匹配
Subscripted assignment dimension mismatch in Matlab with true index
我写了这个 for 循环来做一些事情,我确定这个结果数组的大小等于 30,但我不知道为什么会出现关于不匹配维度的错误!
for rno=1:30
PersonNumber = outputtrainingdata(rno);
RealOutput = finaloutputforeachrow(rno,PersonNumber);
if round(RealOutput) == 1
result(rno) = 'True'; % Error in this line
%result = 'True'
TrueTrainingcounter = TrueTrainingcounter+1;
else
result(rno) = 'False';
%result = 'False'
end
end
您正在尝试将 字符串 'True'
(长度 = 4)分配给 result(rno)
(长度 = 1)。同样,您正在尝试将 string 'False'
(长度 = 5)分配给 result(rno)
(长度 = 1)。这就是您收到尺寸不匹配错误的原因。
如果您希望 result
实际保存这些字符串,那么您需要使用元胞数组。
result = cell(1, 30);
然后使用{}
分配给它
result{rno} = 'True';
更好的方法是使用逻辑值 true
和 false
而不是字符串 'True'
和 'False'
。因为 length(true) == 1
,我们不会再遇到维度不匹配问题。
result(rno) = round(RealOutput) == 1;
我写了这个 for 循环来做一些事情,我确定这个结果数组的大小等于 30,但我不知道为什么会出现关于不匹配维度的错误!
for rno=1:30
PersonNumber = outputtrainingdata(rno);
RealOutput = finaloutputforeachrow(rno,PersonNumber);
if round(RealOutput) == 1
result(rno) = 'True'; % Error in this line
%result = 'True'
TrueTrainingcounter = TrueTrainingcounter+1;
else
result(rno) = 'False';
%result = 'False'
end
end
您正在尝试将 字符串 'True'
(长度 = 4)分配给 result(rno)
(长度 = 1)。同样,您正在尝试将 string 'False'
(长度 = 5)分配给 result(rno)
(长度 = 1)。这就是您收到尺寸不匹配错误的原因。
如果您希望 result
实际保存这些字符串,那么您需要使用元胞数组。
result = cell(1, 30);
然后使用{}
result{rno} = 'True';
更好的方法是使用逻辑值 true
和 false
而不是字符串 'True'
和 'False'
。因为 length(true) == 1
,我们不会再遇到维度不匹配问题。
result(rno) = round(RealOutput) == 1;