作者Lionel (跟快樂交往)
看板MATLAB
標題[討論] 二維轉一維
時間Sun Mar 22 16:21:46 2015
問題:
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裡面要放什麼我就想不出來了....
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.171.65.126
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MATLAB/M.1427012508.A.85E.html
※ 編輯: Lionel (118.171.65.126), 03/22/2015 16:24:18
1F:推 celestialgod: 設一個變數k=1,if成立assign B(k)為A(i, j),而且k 03/22 18:52
2F:→ celestialgod: 遞增 03/22 18:52
3F:→ celestialgod: 我覺得A(A/2>1)應該出的來 03/22 18:53
4F:推 profyang: 就3F那樣就好了 matlab就是盡量不要寫迴圈 03/22 19:43
5F:→ profyang: 不過可能你要先定義C=A'然後B=C(C/2>0)出來才是你要的B 03/22 19:44
6F:→ profyang: 1 03/22 19:45
7F:→ profyang: 你真的想寫迴圈的話 外面先定B=[];然後迴圈裏面就 03/22 19:46
8F:→ profyang: B=[B;a(i,j)] 03/22 19:46
A=[0 1 3 4;
5 6 1 1;
7 0 1 8;
9 0 0 0;];
B=[];
N=1;
for i=1:4
for j=1:4
if A(i,j)/2>1
B(1,N)=[A(i,j)];
N=N+1;
end
end
end
感謝大家 我大概知道了
※ 編輯: Lionel (118.171.65.126), 03/22/2015 21:48:59
9F:→ Lionel: 主要是我的if是在call別的矩陣 我只是把問題縮小來問 03/22 21:50
10F:→ Lionel: 其實我也很討厭跑for 會很慢 03/22 21:55
11F:推 profyang: 假設你別的矩陣是D 你一樣可以寫A(D/2>1) 只要A和D這兩 03/22 22:04
12F:→ profyang: 矩陣size一樣 03/22 22:05
13F:→ ja20331: A=A'; B=A(find(A/2>1))'; 03/23 00:13