我正在使用重塑来在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
有解决方法吗?
感谢您的帮助
答案 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')