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(:));
错误:使用horzcat时出错
连接的矩阵的尺寸不一致。
我使用Fuse_Data
作为提取的功能,并用作NN训练的输入。但我无法将其连接起来。
当我使用whos
命令检查变量时,结果如下:
Name Size Bytes Class
m 845x1 6760 double
s 1x1079 8632 double
skewww 1x1079 8632 double
kurtooo 1x1079 8632 double
答案 0 :(得分:1)
正如沃尔夫所说,你的代码的另一部分可能正在弄乱你的价值。您正在处理的一般问题来自于您没有使用for循环向量化计算的事实。作为任何常规的Matlab用户,我鼓励您尽可能地使用矢量化。值得注意的是,将来要避免与变量大小相关的这类问题:
pixVal = [stats(:).PixelValues]
m = mean(pixVal)
s = std2(pixVal);
skewww = skewness(double(pixVal));
kurtooo = kurtosis(double(pixVal));
Fuse_Data=[m',s',skewww',kurtooo']
正如您所看到的,您重新定义它之后不再需要担心m的前一个长度(就像任何矢量化操作一样)。