[問題] 如何依照條件讓矩陣存值?(以解決)

看板MATLAB作者 (zx168zx)時間10年前 (2015/03/29 21:24), 10年前編輯推噓0(0011)
留言11則, 1人參與, 最新討論串1/1
各位大大好 小弟想請問一下關於矩陣存值的方法 目前我的程式結構大致如下 先決定矩陣的大小 box=[mm,nn,jj,L]; 然後進入迴圈 for m=1,L 計算 a 再計算a會落在box的哪裡 x,y,z 然後把a存在box box(x,y,z,m)=a end 我的問題是 如果在m=1的迴圈 a的落點 x,y,z 分別是1,1,1 那這個a值會被存在 box(1,1,1,1) 那如果在m=500 的迴圈 a的落點又到 x,y,z=1,1,1 那這個a值就會被存在 box(1,1,1,500) 但這樣好像很佔記憶體 因為要是L很大 這個四維矩陣會很大 我想說有沒有辦法能夠讓 a 的存法變成 第一筆符合x,y,z=1,1,1 的存在box(1,1,1,1) 第二筆符合x,y,z=1,1,1 的存在box(1,1,1,2) 不知道各位大大有沒有甚麼想法可以提供給我參考? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.1.136 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1427635480.A.E4A.html

03/29 21:31, , 1F
box=cell(mm, nn, jj); box{1, 1, 1}={box{1, 1, 1}
03/29 21:31, 1F

03/29 21:31E, , 2F
, {a}}
03/29 21:31E, 2F
c大想問一下 cell那樣寫的意思是? 我有點對應不到你的寫法 ※ 編輯: zx168zx (140.116.192.204), 03/30/2015 01:20:19

03/30 01:20, , 3F
創一個cell,後面是append element to cell
03/30 01:20, 3F

03/30 01:21, , 4F
因為每一個cell都獨立,所以你可以存不同長度
03/30 01:21, 4F
c大 我剛剛檢查了一下我的box矩陣 我發現有資料的cell都是 1x2 是代表只有一筆資料落在box矩陣的某一點嗎? 因為我的資料應該是不是只有一筆符合而已 再麻煩c大為小弟解惑一下 ※ 編輯: zx168zx (140.116.1.136), 03/30/2015 12:41:53

03/30 12:53, , 5F
1x2就是兩筆符合
03/30 12:53, 5F
好的 我在想看看是不是我前面寫錯 另外我想請問一下 我如果想把box裡面的a值加總起來 N=sum(size(box{x,y,z},2)) if N~=0 v=0; else v=N/(delta*delta*delta); end 這樣的寫法有問題嗎? ※ 編輯: zx168zx (140.116.1.136), 03/30/2015 13:44:48

03/30 14:12, , 6F
不太懂你的目的,需要再解釋
03/30 14:12, 6F
抱歉解釋不清楚 就是我想把box{1~mm,1~nn,1~jj}每一格裡面的a值都加總起來 然後計算v 我剛剛又測試了一下 我放大我mm,nn,jj的間距 但cell依舊是1x2 是他會把值覆蓋過去嗎? 還是我前面計算落點有問題 因為我看我前面的過程想不出哪邊有錯.. 這樣c大知道我再問甚麼嗎....? ※ 編輯: zx168zx (140.116.1.136), 03/30/2015 14:29:17

03/30 16:01, , 7F
我應該猜到了...我產生一個範例看看。
03/30 16:01, 7F
※ 編輯: zx168zx (140.116.1.136), 03/30/2015 16:09:55

03/30 16:11, , 8F
我用錯括號了抱歉,要用[]才對
03/30 16:11, 8F

03/30 16:11, , 9F
03/30 16:11, 9F

03/30 16:13, , 10F
我不知道你的a是整數還是向量or矩陣,因此我寫兩個
03/30 16:13, 10F

03/30 16:13, , 11F
給你參考
03/30 16:13, 11F
感謝C大 我再參考研究看看 ※ 編輯: zx168zx (140.116.1.136), 03/30/2015 16:16:31 ※ 編輯: zx168zx (140.116.1.136), 03/30/2015 20:33:31
文章代碼(AID): #1L5_qOvA (MATLAB)