[討論] 二維轉一維

看板MATLAB作者 (跟快樂交往)時間10年前 (2015/03/22 16:21), 10年前編輯推噓3(3010)
留言13則, 4人參與, 最新討論串1/2 (看更多)
問題: 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://www.ptt.cc/bbs/MATLAB/M.1427012508.A.85E.html ※ 編輯: Lionel (118.171.65.126), 03/22/2015 16:24:18

03/22 18:52, , 1F
設一個變數k=1,if成立assign B(k)為A(i, j),而且k
03/22 18:52, 1F

03/22 18:52, , 2F
遞增
03/22 18:52, 2F

03/22 18:53, , 3F
我覺得A(A/2>1)應該出的來
03/22 18:53, 3F

03/22 19:43, , 4F
就3F那樣就好了 matlab就是盡量不要寫迴圈
03/22 19:43, 4F

03/22 19:44, , 5F
不過可能你要先定義C=A'然後B=C(C/2>0)出來才是你要的B
03/22 19:44, 5F

03/22 19:45, , 6F
1
03/22 19:45, 6F

03/22 19:46, , 7F
你真的想寫迴圈的話 外面先定B=[];然後迴圈裏面就
03/22 19:46, 7F

03/22 19:46, , 8F
B=[B;a(i,j)]
03/22 19:46, 8F
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

03/22 21:50, , 9F
主要是我的if是在call別的矩陣 我只是把問題縮小來問
03/22 21:50, 9F

03/22 21:55, , 10F
其實我也很討厭跑for 會很慢
03/22 21:55, 10F

03/22 22:04, , 11F
假設你別的矩陣是D 你一樣可以寫A(D/2>1) 只要A和D這兩
03/22 22:04, 11F

03/22 22:05, , 12F
矩陣size一樣
03/22 22:05, 12F

03/23 00:13, , 13F
A=A'; B=A(find(A/2>1))';
03/23 00:13, 13F
文章代碼(AID): #1L3dkSXU (MATLAB)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 2 篇):
3
13
文章代碼(AID): #1L3dkSXU (MATLAB)