使用不均匀的重塑

时间:2013-10-19 12:02:45

标签: matlab

我正在使用重塑来在Matlab中显示一些数据。

   x = reshape(x, fs*W, []);

然而,我的数据不均衡:

   Eg.   1 2 3 4 5 6 7 
         8 9 1 2 3 4 5
         6 7 8

我收到一条错误消息,说重新形状不适用于不均匀的尺寸:

          not divisible into total number of elements, xxxx

有解决方法吗?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

您可以使用零,NaN等填写其余元素,然后使用重塑:

x = rand(13,1);
num_el = numel(x);
n = 3     % Number of rows
x(numel(x) + (n - mod(numel(x), n))) = 0;

x = reshape(x, n, [])
x =

   0.15991   0.99828   0.98674   0.06898   0.78390
   0.87197   0.63062   0.16429   0.06593   0.00000
   0.73633   0.41108   0.70827   0.55363   0.00000

此行:x(numel(x) + (n - mod(numel(x), n))) = 0;将值0分配给可被n整除的第一个值。如果您需要NaN,可以执行以下操作:

x(numel(x)+1:numel(x)+(n-mod(numel(x),3))) = NaN

答案 1 :(得分:0)

你无法使用重塑来创建这样的东西,这不是矩阵。

打印出您可能使用的数据:

fprintf('%3d%3d%3d%3d%3d%3d%3d\n',x);fprintf('\n')