[問題] 提取矩陣中大於0的數值到另一個矩陣

作者: shadow5402 (shadow5402)   2015-05-04 14:57:51
假設我目前有一個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
請問我是哪裡寫錯了?又該怎麼改呢?
謝謝。
作者: JamesChen (James)   2015-05-04 15:09:00
固定位置或是非0的數量是固定的?
作者: jatj   2015-05-04 15:26:00
不是很瞭解你的y是怎麼塞的 x只有七個非0y怎麼有8個
作者: celestialgod (天)   2015-05-04 16:22:00
arrayfun(@(y) y{:}(y{:}~=0), mat2cell(x, ones(1,4), 4), 'UniformOutput', false)如果等長可以在用cell2mat轉成矩陣或是利用cellfun補0補到等長迴圈則我用回文好了QQ
作者: profyang (prof)   2015-05-05 09:53:00
你的y明明就有0 這不是自打嘴巴嗎?= =
作者: celestialgod (天)   2015-05-05 11:45:00
原po應該只是想要矩陣的樣子也不知道可以用NA去補

Links booklink

Contact Us: admin [ a t ] ucptt.com