[討論] 二維轉一維

作者: Lionel (祝福與成全)   2015-03-22 16:21:46
問題:
A=[0 1 3 4;
5 6 1 1;
7 0 1 8;
9 0 0 0;]
如果A矩陣(4*4)的一個元素/2後大於1
想要得到結果是B(1*N)矩陣 %N的大小由A決定
B=[3 4 5 6 7 8 9]
該如何寫code
my code
A=[0 1 3 4;
5 6 1 1;
7 0 1 8;
9 0 0 0;]
for i=1:3
for j=1:4
if a(i,j)/2>1
end
end
end
if裡面要放什麼我就想不出來了....
作者: celestialgod (天)   2015-03-22 18:52:00
設一個變數k=1,if成立assign B(k)為A(i, j),而且k遞增我覺得A(A/2>1)應該出的來
作者: profyang (prof)   2015-03-22 19:43:00
就3F那樣就好了 matlab就是盡量不要寫迴圈不過可能你要先定義C=A'然後B=C(C/2>0)出來才是你要的B1你真的想寫迴圈的話 外面先定B=[];然後迴圈裏面就B=[B;a(i,j)]
作者: Lionel (祝福與成全)   2015-03-22 21:50:00
主要是我的if是在call別的矩陣 我只是把問題縮小來問其實我也很討厭跑for 會很慢
作者: profyang (prof)   2015-03-22 22:04:00
假設你別的矩陣是D 你一樣可以寫A(D/2>1) 只要A和D這兩矩陣size一樣
作者: ja20331 (沒有)   2015-03-23 00:13:00
A=A'; B=A(find(A/2>1))';

Links booklink

Contact Us: admin [ a t ] ucptt.com