| 查看: 1956 | 回复: 8 | ||
[求助]
matlab矢量写法,这样可以吗?急求啊!!
|
|
大家好,在论坛上和网上也学到了一些将for语句写成矢量的写法,但是我的这个里面有if句法,如何来实现呢?我试了下,没有成功 就这样几句话: ny0=64; fi=2*pi/16; t=2.8; I=1i; H0=zeros(ny0,ny0); for j=1:ny0; if(mod(jl,2)==1) m=(j(l)+1)/2; else m=j(l)/2; end Ax=-(m-1)*0.5*fi; if (mod(j,4)==1) H0(j,j+1)=t*exp(I*Ax); end end 我试着这样去做: ny0=64; fi=2*pi/16; t=2.8; I=1i; H0=zeros(ny0,ny0); j=1:ny0; l=1:1:length(j); if(mod(j(l),2)==1) m=(j(l)+1)/2; else m=j(l)/2; end Ax=-(m-1)*0.5*fi; if (mod(j(l),4)==1) H0(j(l),j(l)+1)=t*exp(I*Ax); end 但是很奇怪啊,里面没数据啊。 有没有人可以帮我下啊? |
» 猜你喜欢
不自信的我
已经有8人回复
磺酰氟产物,毕不了业了!
已经有8人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有10人回复
26申博(荧光探针方向,有机合成)
已经有4人回复
要不要辞职读博?
已经有3人回复
论文终于录用啦!满足毕业条件了
已经有26人回复
2026年机械制造与材料应用国际会议 (ICMMMA 2026)
已经有4人回复
Cas 72-43-5需要30g,定制合成,能接单的留言
已经有8人回复
北京211副教授,35岁,想重新出发,去国外做博后,怎么样?
已经有8人回复
自荐读博
已经有3人回复


2楼2012-12-05 20:18:18

3楼2012-12-05 20:28:42

4楼2012-12-05 20:29:27

5楼2012-12-05 21:09:37
libralibra
至尊木虫 (著名写手)
骠骑将军
- 程序强帖: 40
- 应助: 817 (博后)
- 金币: 12914.1
- 红花: 64
- 帖子: 2238
- 在线: 287.3小时
- 虫号: 696514
- 注册: 2009-02-05
- 专业: 计算机软件

6楼2012-12-05 21:33:22

7楼2012-12-06 09:03:01
baobiao007
木虫 (职业作家)
中国特色
- 应助: 201 (大学生)
- 金币: 6482.7
- 散金: 557
- 红花: 40
- 帖子: 3050
- 在线: 1009.9小时
- 虫号: 505962
- 注册: 2008-02-18
- 专业: 应用地球物理学

8楼2012-12-06 17:02:18
libralibra
至尊木虫 (著名写手)
骠骑将军
- 程序强帖: 40
- 应助: 817 (博后)
- 金币: 12914.1
- 红花: 64
- 帖子: 2238
- 在线: 287.3小时
- 虫号: 696514
- 注册: 2009-02-05
- 专业: 计算机软件
【答案】应助回帖
|
j=1:ny0; 循环标志l = 1:length(j),所以j(l)==l 你的代码就是 然后分析一下: j = 1:64; 开始循环j的元素l 如果是奇数,自加1除以2,如果是偶数,除以2,赋值给m 根据m得到Ax 如果当前元素除4余1,给H0的(l,l+1)元素赋值. j中所有除以4余1的元素是 一共16个,等于其实你只需要给H0的这16个元素赋值 既然给H0赋值的元素个数只有16个,为什么要循环64次呢?等于有48次循环计算的m和Ax根本没有用处. 那么修改一下:revise 1 既然mod(l,4)==1,就有l=4*n+1=2*2n+1,说明l除以2也余1,直接计算m然后给H0元素赋值. revise2,matlab的for可以指定步长,连if判断都不需要了 向量化的办法: revise3,既然是给全0矩阵H0的16个元素赋值,那你直接运用向量化计算出来结果,然后赋值就行了.不过可能有些绕,需要用好几个函数来实现 可以通过sparse来实现,不过sparse之后用full只能还原到61*62维,因为其他元素都是0 所以需要用局部矩阵赋值的办法 revise 4,终极向量化办法,得到行列号后,直接得到下标序列,将H0看做一维向量赋值 |

9楼2012-12-06 22:24:58












回复此楼





