Matlab horzcat错误:尺寸不一致
错误:使用horzcat时出错 被连接的矩阵的维数不一致 我使用Fuse_数据作为提取的特征,并将其作为NN训练的输入。但我无法将其连接起来 当我使用whos命令检查变量时,结果如下:Matlab horzcat错误:尺寸不一致,matlab,matrix,concatenation,Matlab,Matrix,Concatenation,错误:使用horzcat时出错 被连接的矩阵的维数不一致 我使用Fuse_数据作为提取的特征,并将其作为NN训练的输入。但我无法将其连接起来 当我使用whos命令检查变量时,结果如下: for ii = 1:numel(stats); m(ii) = mean(stats(ii).PixelValues); s(ii) = std2(stats(ii).PixelValues); skewww(ii) = skewness(double(stats(i
for ii = 1:numel(stats);
m(ii) = mean(stats(ii).PixelValues);
s(ii) = std2(stats(ii).PixelValues);
skewww(ii) = skewness(double(stats(ii).PixelValues));
kurtooo(ii) = kurtosis(double(stats(ii).PixelValues));
end
Fuse_Data=horzcat(m(:),s(:),skewww(:),kurtooo(:));
正如Wolfie所说,代码的另一部分很可能会影响您的价值。您要处理的一般问题来自您没有使用for循环对计算进行矢量化的事实。作为Matlab的普通用户,我鼓励您尽可能多地使用矢量化。值得注意的是,为了避免将来出现与变量大小相关的此类问题:
Name Size Bytes Class
m 845x1 6760 double
s 1x1079 8632 double
skewww 1x1079 8632 double
kurtooo 1x1079 8632 double
正如您所看到的,您不再需要担心m的前一个长度,因为您可以像任何向量化操作一样重新定义它。正如您所写的,m的元素数与您尝试连接的其他变量的元素数不同。。。我建议您在循环之前使用m=zerosumelstats,1初始化变量;s=零。。。等等,因为最有可能的解决方案是,您之前使用了一个更大的stats变量来运行它,并且从未清除过s/skew/kur。或者只是在运行代码之前清除。
pixVal = [stats(:).PixelValues]
m = mean(pixVal)
s = std2(pixVal);
skewww = skewness(double(pixVal));
kurtooo = kurtosis(double(pixVal));
Fuse_Data=[m',s',skewww',kurtooo']