看板 MATLAB 關於我們 聯絡資訊
爬了一下文仍然沒有頭緒 還請多多指教 for迴圈應該可以使用兩個index吧? 例如 X = zeros(5); for i = 1:5 , j = 6:10; X(i,j-5) = i + j; end 原本我以為它的執行順序是 i = 1 和 j = 6 丟進敘述內,1+6=7 7這個值就會存進X(1,1) 然後跑完第一圈,接著繼續第二圈i = 2,j = 7 跑完迴圈後照理說X會變成這樣 7 0 0 0 0 0 9 0 0 0 0 0 11 0 0 0 0 0 13 0 0 0 0 0 15 可是實際執行後卻是 7 8 9 10 11 8 9 10 11 12 9 10 11 12 13 10 11 12 13 14 11 12 13 14 15 這不就變成跟以下巢狀迴圈一樣了嗎 X = zeros(5); for i = 1:5 for j = 6:10 X(i,j-5) = i + j; end end 想請問問題出在哪呢 或者說 該怎麼寫才可以達成上面我想的邏輯呢 就是i和j一起增加 而不是像巢狀迴圈一樣一個index先跑完 隱約想得到可是就是沒辦法實際化 很少寫程式問題有點笨鞭小力一點ˊ口ˋ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.1.134 ※ 編輯: x5825108 來自: 140.116.1.134 (06/02 12:42)
profyang:你這樣其實只是一個index... 06/02 14:19
profyang:i = 1:5 , j = 6:10; for k=1:5 06/02 14:20
profyang:X(i(k),j(k)-5) = i(k) + j(k); 06/02 14:20
prouno:兩個變數維度都一樣的話 diag(i+j) 就好了 06/02 16:59
aramilcat:X = []; 06/02 17:58
aramilcat:for i = [1:5;6:10] 06/02 17:59
aramilcat: X = [ X sum(i)]; 06/02 17:59
aramilcat:end 06/02 17:59
aramilcat:diag(X) 06/02 17:59
aramilcat:我這樣寫會不會很多餘...QQ 我也剛初學 06/02 18:01
aramilcat:X = zeros(5) 06/02 18:31
aramilcat:for i = [1:5;6:10] 06/02 18:31
aramilcat: X(i(1),i(1)) = i(1) + i(2) 06/02 18:32
aramilcat:end 06/02 18:32
aramilcat:恩...這樣寫比較接近原po想要問的感覺? 06/02 18:32
aramilcat:因為for迴圈是依序取用變數的行向量,所以寫成矩陣形式 06/02 19:12
aramilcat:就可以做到你想要做的東西 06/02 19:12
x5825108:我大概懂我原本code的問題了 06/02 19:30
x5825108:我那樣寫的話 matlab 只會認第一個變數i 06/02 19:31
x5825108:j就會變成另一個矩陣 然後跑進迴圈和每一個i 做運算 06/02 19:32
x5825108:所以才會跑出那些我預期之外的數 06/02 19:32
x5825108:其實我只是想確認matlab可不可以這樣用才舉這個例子哈哈 06/02 19:33
x5825108:不過看了大家的回應我也大概懂了,感謝各位費心指導T_T 06/02 19:35