作者zx168zx (zx168zx)
看板MATLAB
標題[問題] 如何依照條件讓矩陣存值?
時間Sun Mar 29 21:24:38 2015
各位大大好 小弟想請問一下關於矩陣存值的方法
目前我的程式結構大致如下
先決定矩陣的大小
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://webptt.com/m.aspx?n=bbs/MATLAB/M.1427635480.A.E4A.html
1F:→ celestialgod: box=cell(mm, nn, jj); box{1, 1, 1}={box{1, 1, 1} 03/29 21:31
2F:→ celestialgod: , {a}} 03/29 21:31E
c大想問一下 cell那樣寫的意思是? 我有點對應不到你的寫法
※ 編輯: zx168zx (140.116.192.204), 03/30/2015 01:20:19
3F:→ celestialgod: 創一個cell,後面是append element to cell 03/30 01:20
4F:→ celestialgod: 因為每一個cell都獨立,所以你可以存不同長度 03/30 01:21
c大 我剛剛檢查了一下我的box矩陣 我發現有資料的cell都是 1x2
是代表只有一筆資料落在box矩陣的某一點嗎?
因為我的資料應該是不是只有一筆符合而已
再麻煩c大為小弟解惑一下
※ 編輯: zx168zx (140.116.1.136), 03/30/2015 12:41:53
5F:→ 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
6F:→ 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
7F:→ celestialgod: 我應該猜到了...我產生一個範例看看。 03/30 16:01
※ 編輯: zx168zx (140.116.1.136), 03/30/2015 16:09:55
8F:→ celestialgod: 我用錯括號了抱歉,要用[]才對 03/30 16:11
10F:→ celestialgod: 我不知道你的a是整數還是向量or矩陣,因此我寫兩個 03/30 16:13
11F:→ 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