Re: [問題] 變數 矩陣合併已回收

看板MATLAB作者 (波卡)時間15年前 (2010/05/30 17:58), 編輯推噓4(402)
留言6則, 4人參與, 最新討論串3/3 (看更多)
: 寫法如下 : temp=[A1;A2]; : for j=3:n : s4=['temp=[temp;A',num2str(j),']'] : eval(s4) : end : 迴圈跑完後 temp就是合併好的矩陣 不好意思又回文 感謝板友建議 我又重新改過做法 本來是用迴圈加eval不斷把矩陣合併 較有效率的做法應該是先用迴圈生成字串 然後再利用這些字串一次合併所有矩陣 temp=['A1;','A2']; for j=3:n s4=[ 'temp=[temp, '';A', num2str(j) '''];' ]; eval(s4) end s5=['temp=','[', temp, ']']; eval(s5) 我測試的資料量不多 最後完成的結果約8000*200的矩陣 先前做法約1.6秒 新寫法約0.5秒 資料量大時就很明顯了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.20.157

05/30 19:28, , 1F
A1 A2 可以放進迴圈 不用單獨寫
05/30 19:28, 1F

05/30 21:45, , 2F
謝謝 也謝謝原先提供idea的人 受益良多
05/30 21:45, 2F

05/30 23:42, , 3F
其實連生成字串也可以避掉迴圈...XD
05/30 23:42, 3F

05/31 01:34, , 4F
XD 有更快的方法喔 挺想知道的說!
05/31 01:34, 4F

05/31 01:37, , 5F
不過我想應該沒辦法再快多少了吧 迴圈生字串夠快了
05/31 01:37, 5F

05/31 02:39, , 6F
生成字串是沒差多少,但可以練習一下。
05/31 02:39, 6F
文章代碼(AID): #1C0ZRISb (MATLAB)
文章代碼(AID): #1C0ZRISb (MATLAB)