看板 MATLAB 關於我們 聯絡資訊
各位大大好 小弟想請問一下關於矩陣存值的方法 目前我的程式結構大致如下 先決定矩陣的大小 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
celestialgod: box=cell(mm, nn, jj); box{1, 1, 1}={box{1, 1, 1} 03/29 21:31
celestialgod: , {a}} 03/29 21:31E
c大想問一下 cell那樣寫的意思是? 我有點對應不到你的寫法 ※ 編輯: zx168zx (140.116.192.204), 03/30/2015 01:20:19
celestialgod: 創一個cell,後面是append element to cell 03/30 01:20
celestialgod: 因為每一個cell都獨立,所以你可以存不同長度 03/30 01:21
c大 我剛剛檢查了一下我的box矩陣 我發現有資料的cell都是 1x2 是代表只有一筆資料落在box矩陣的某一點嗎? 因為我的資料應該是不是只有一筆符合而已 再麻煩c大為小弟解惑一下 ※ 編輯: zx168zx (140.116.1.136), 03/30/2015 12:41:53
celestialgod: 1x2就是兩筆符合 03/30 12:53
好的 我在想看看是不是我前面寫錯 另外我想請問一下 我如果想把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
celestialgod: 不太懂你的目的,需要再解釋 03/30 14:12
抱歉解釋不清楚 就是我想把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
celestialgod: 我應該猜到了...我產生一個範例看看。 03/30 16:01
※ 編輯: zx168zx (140.116.1.136), 03/30/2015 16:09:55
celestialgod: 我用錯括號了抱歉,要用[]才對 03/30 16:11
celestialgod: 範例code:http://pastebin.com/RcyMTFDS 03/30 16:11
celestialgod: 我不知道你的a是整數還是向量or矩陣,因此我寫兩個 03/30 16:13
celestialgod: 給你參考 03/30 16:13
感謝C大 我再參考研究看看 ※ 編輯: zx168zx (140.116.1.136), 03/30/2015 16:16:31 ※ 編輯: zx168zx (140.116.1.136), 03/30/2015 20:33:31