matlab数组索引必须为正整数或逻辑值,错误解决办法

num=16;
wh=15; h=0.002;
XT_sum=zeros(num+3,wh/h);  YT_sum=zeros(num+3,wh/h);
ZD_sum=zeros(num+3,wh/h);  FaiD_sum=zeros(num+3,wh/h);
ZDD_sum=zeros(num+3,wh/h); FaiDD_sum=zeros(num+3,wh/h);
for t=h:h:wh
    XT=rand(num+3,1)./10;  YT=rand(num+3,1)./10;
    ZD=rand(num+3,1);      FaiD=rand(num+3,1);
    ZDD=rand(num+3,1);     FaiDD=rand(num+3,1);
    
    XT_sum(1:end,t/h)=XT;   YT_sum(1:end,t/h)=YT;
    ZD_sum(1:end,t/h)=ZD;   ZD_sum(1:end,t/h)=FaiD;
    ZDD_sum(1:end,t/h)=ZDD; FaiDD_sum(1:end,t/h)=FaiDD;
end

这种错误一般出现在for循环中,当自己步长不是整数,且需要调用自己每一步的步长数。此类解决方法。就是增加一个变量,使变量在循环中+1。

num=16;
wh=15; h=0.002;
XT_sum=zeros(num+3,wh/h);  YT_sum=zeros(num+3,wh/h);
ZD_sum=zeros(num+3,wh/h);  FaiD_sum=zeros(num+3,wh/h);
ZDD_sum=zeros(num+3,wh/h); FaiDD_sum=zeros(num+3,wh/h);
i=1;
for t=h:h:wh
    XT=rand(num+3,1)./10;  YT=rand(num+3,1)./10;
    ZD=rand(num+3,1);      FaiD=rand(num+3,1);
    ZDD=rand(num+3,1);     FaiDD=rand(num+3,1);
    
    XT_sum(1:end,i)=XT;   YT_sum(1:end,i)=YT;
    ZD_sum(1:end,i)=ZD;   ZD_sum(1:end,i)=FaiD;
    ZDD_sum(1:end,i)=ZDD; FaiDD_sum(1:end,i)=FaiDD;
    i=i+1;
end


版权声明:本文为weixin_51277347原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。