Re: For 雙重迴圈,顯示問題

看板MATLAB作者 (攸藍)時間10年前 (2015/07/25 17:09), 10年前編輯推噓2(203)
留言5則, 1人參與, 最新討論串4/6 (看更多)
※ 引述《ccchain (陽光沙灘腳踏車~)》之銘言: : ※ 引述《celestialgod (攸藍)》之銘言: : : 你要的應該是這樣? : : for i = 1:6 : : for j = (i+1):6 : : eval(['compare', num2str(i), num2str(j), '= dist(A(', ... : : num2str(i), '), B(', num2str(j), ');']); : : end : : end : 請問 只能用eval存有變數跟文字混在一起? 還是有其它方法可以答到同樣效果? : For i=1:3 : For j=1:3 : Compare (I,j)=i*j ; : End : End : 因為若是用eval, 我不知道該怎麼取 : eval(['compare', num2str(I),num2str(j)...]) : 是直接拿compare (I)(j)? : 謝謝。剛練習matlab不久,問題太淺,請各位大大耐心指導,感恩。 你可以考慮其他的資料格式: cell out = cell(3, 3); for i = 1:3 for j = 1:3 out{i, j} = i*j; end end 每一個cell可以存struct (field), ND array, ...各種類型的變數 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.27.107 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1437815377.A.52C.html

07/25 17:14, , 1F
痾...只是存個i*j為啥要用到cell...直接out=zeros(3,3)
07/25 17:14, 1F

07/25 17:14, , 2F
然後out(i,j)=i*j; 這樣不好?
07/25 17:14, 2F

07/25 17:15, , 3F
何況只是相乘的話 我會先用meshgrid展開他再直接.*就不
07/25 17:15, 3F

07/25 17:15, , 4F
用for迴圈了
07/25 17:15, 4F
他應該只是要一個簡單的例子,去避免使用eval而已 他後面可能要接一個function帶入i, j 在我不知道output的情況下,我建議他用cell處理 如果i*j,最快的方法應該是bsxfun(@times, 1:3, [1:3]') ※ 編輯: celestialgod (123.205.27.107), 07/25/2015 17:45:30

07/25 18:48, , 5F
真的是bsxfun比較快 看來是meshgrid展開花到額外資源了
07/25 18:48, 5F
文章代碼(AID): #1Lir9HKi (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1Lir9HKi (MATLAB)