作者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/cn.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