horzcat错误:维度不一致

时间:2018-02-21 11:21:45

标签: matlab matrix concatenation

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              

1 个答案:

答案 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的前一个长度(就像任何矢量化操作一样)。