24小时热门版块排行榜    

查看: 372  |  回复: 1

田山东

捐助贵宾 (著名写手)

[求助] matlab优化去掉for,用矢量化运行,这样为什么不行呢?

clc;
clear;
ny0=64;
fi=2*pi/16;
t=2.8;
I=1i;
H0=zeros(ny0,ny0);
H1=zeros(ny0,ny0);

for  j=1:ny0
if(mod(j,2)==1)
m=(j+1)/2;
else
m=j/2;
    end

Ax=-(m-1)*fi*0.5;  
   if (mod(j,4)==1)
   H0(j,j+1)=t*exp(I*Ax);  
     if(j==1)
      H0(j,ny0)=t;
     else
      H0(j,j-1)=t;
     end
      end

end

这里for换成矢量运算,有个哥们给个算法,但是没看懂,请指教:

tmpcond=mod((1:ny0),4)==1;
H(tmpcond,[false;tmpcond(1:end-1)])=t*exp(I*Ax);  
我试着运行一个简单的:

tmpcond=mod((1:ny0),4)==1;
H1(tmpcond,[false;tmpcond(1:end-1)])=t;

结果出错了:

Error using vertcat
CAT arguments dimensions are not consistent.

Error in youhuaxuexi (line 30)
H1(tmpcond,[false;tmpcond(1:end-1)])=t;
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

everythinghasitsseason.enjoyyourlife.
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

可以把一个大型矩阵,比如(6000,6000)矩阵分成块分别求特征值和特征向量吗?然后把他们组合在一起,得到整个矩阵的特征值和特征向量?
everythinghasitsseason.enjoyyourlife.
2楼2012-12-05 15:15:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 田山东 的主题更新
信息提示
请填处理意见