Matlab horzcat错误:尺寸不一致

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

错误:使用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(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']