Re: [討論] 二維轉一維

看板MATLAB作者 (成仔)時間9年前 (2015/03/22 23:05), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串2/2 (看更多)
reshape -->可將二維矩陣變一維 numel -->可訂出矩陣size A=[0 1 3 4; 5 6 1 1; 7 0 1 8; 9 0 0 0;] B= reshape (A, 1, numel(A)) --> 得到 B=[0 5 7 9 1 6 0 0 3 1 1 0 4 1 8 0] 先轉置在求B比較符合你要的排列 B= reshape (A',1, numel(A)) --> 得到 B=[0 1 3 4 5 6 1 1 7 0 1 8 9 0 0 0] 最後用推文的 B= B(B/2>1) -->為你所求 結論 code: A=[0 1 3 4; 5 6 1 1; 7 0 1 8; 9 0 0 0;] B= reshape (A',1, numel(A)) B= B(B/2>1) ※ 引述《Lionel (跟快樂交往)》之銘言: : 問題: : 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), 來自: 111.255.36.11 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1427036707.A.4EC.html

03/22 23:54, , 1F
不用reshape 因為A(A/2>1)這種東西它index就自動變成1D
03/22 23:54, 1F

03/23 00:34, , 2F
又多學到一招了 matlab函數根本超多
03/23 00:34, 2F

03/23 11:08, , 3F
真的耶~~ 先轉置 再下指令就ok了
03/23 11:08, 3F

03/23 11:50, , 4F
因為matlab的array本來就有把它編成只有一個index的排序
03/23 11:50, 4F

03/23 11:50, , 5F
方式 並非二維陣列一定要兩個index去叫他
03/23 11:50, 5F
文章代碼(AID): #1L3jeZJi (MATLAB)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1L3jeZJi (MATLAB)