假设我目前有一个varible x
x =
0 0 1 2
0 3 2 0
1 3 0 0
2 0 0 0
我希望将其中不等于0的部分移动到另外一varible y
变成
y =
1 3 1 2
2 3 2 0
目前我的写法是
for k = 1:4
for a = 1:2
if x(k,1) > 0
y(a,1) = x(k,1);
end
if x(k,2) > 0
y(a,2) = x(k,2);
end
if x(k,3) > 0
y(a,3) = x(k,3);
end
if x(k,4) > 0
y(a,4) = x(k,4);
end
end
end
但结果却是
y =
2 3 2 2
2 3 2 2
请问我是哪里写错了?又该怎么改呢?
谢谢。
arrayfun(@(y) y{:}(y{:}~=0), mat2cell(x, ones(1,4), 4), 'UniformOutput', false)如果等长可以在用cell2mat转成矩阵或是利用cellfun补0补到等长循环则我用回文好了QQ