hello, my code run one value only from loop(tt) and display one result from total result and then display the message "Subscripted assignment dimension mismatch." ,how to solve it ? and how know the line containning the error?
1 次查看(过去 30 天)
显示 更早的评论
s=[2;3;4;5;6;7;8;9]; z0=[0.3;0.4;0.2;0.6;0.7;0.8;0.9;0.5]; phi=[0.4;0.3;0.6;0.9;0.2;0.5;0.8;0.7]; for tt=1:8 index=7;index1=0; a=normrnd(0,(s(tt)).^2,15000,1);o=50; n=[300;350;400;480;500;600;650;700;800;900;1000;1200;1300;1500;1700;1900;2000;2100;2300;2500;2700;2900;3000;3300;3500;3900;4200;4400;4600;4900;5300;5700;5900;6000;6600;6800;7000;7100;7300;7500;7900;8200;8500;8700;8900;9000;9200;9500;9700;10000]; for nn=1:o z=[]; z(1)=phi(tt)*z0(tt)+a(1); for i=2:n(nn) z(i)=phi(tt)*z(i-1)+a(i); end for i=2:n(nn) g(i)=z(i)*z(i-1); end k1=sum(g,2); num= (n(nn)-2)*k1; for i=3:n(nn) f(i)=z(i-1)*z(i-1); end p=sum(f,2); den=(n(nn)-1)*p; d=min(z); h=max(z); k =7; L= (h-d)/k; intK = round(k); out=[linspace(d,h-L,intK)',linspace(d+L,h,intK)']; for i=1:n(nn) for j=1:k if (out(j,1)<=z(i)&z(i)<=out(j,2)) A(j,1,i)=z(i); end end end for i=1:k temp1=A(i,:,:); % whos temp1 temp2 = nonzeros(temp1); % whos temp2 temp3 = length(temp2); % w hos temp3 le(i)=temp3; end for i=1:k if(le(i)==max(le)) l=(out(i,2)-out(i,1))/4; index=length(out)+1; out(index,:)=[out(i,1) out(i,1)+l]; out(index+1,:)=[out(i,1)+l out(i,1)+2*l]; out(index+2,:)=[out(i,1)+2*l out(i,1)+3*l]; out(index+3,:)=[out(i,1)+3*l out(i,1)+4*l]; out(i,:)=[0 0]; end end t=max(le); for i=1:k if(le(i)==t) le(i)=0.5; end end for i=1:k if(le(i)==max(le)) l=(out(i,2)-out(i,1))/3; index=length(out)+1; out(index,:)=[out(i,1) out(i,1)+l]; out(index+1,:)=[out(i,1)+l out(i,1)+2*l]; out(index+2,:)=[out(i,1)+2*l out(i,1)+3*l]; out(i,:)=[0 0]; end end v=max(le); for i=1:k if(le(i)==v) le(i)=0.5; end end for i=1:k if(le(i)==max(le)) l=(out(i,2)-out(i,1))/2; index=length(out)+1; out(index,:)=[out(i,1) out(i,1)+l]; out(index+1,:)=[out(i,1)+l out(i,1)+2*l]; out(i,:)=[0 0]; end end for i=1:k if(le(i)==0) out(i,:)=[0 0]; end end format long g out; out( all(~out,2), : ) = []; u=[sort(out(:,1)) sort(out(:,2))]; for i=1:length(u) mid(i)=(u(i,1)+u(i,2))/2; q(i)=(u(i,2)-u(i,1))/4; down(i)=u(i,1)+q(i); up(i)=u(i,1)+3*q(i); len(i)=u(i,2)-u(i,1); end zz=[]; for j=1:length(u) if(u(j,1)<=z(2)&z(2)<=u(j,2)) zz(2)=mid(j); end end for j=1:length(u) if(u(j,1)<=z(3)&z(3)<=u(j,2)) mo=abs(z(2)-z(1)); if((mo)>len(j)) zz(3)=up(j); elseif ((mo)==len(j)) zz(3)=mid(j); elseif ((mo)<len(j)) zz(3)=down(j); end end end for r=3:(n(nn)-1) for i=1:length(u) if (u(i,1)<=z(r)&z(r)<=u(i,2)) for j=1:length(u) if (u(j,1)<=z(r+1)&z(r+1)<=u(j,2)) if (j>i) mo=abs((z(r)-z(r-1))-(z(r-1)-z(r-2))); if (((z(r)-z(r-1))-(z(r-1)-z(r-2)))>0) if((u(j,1)<=(mo*2+z(r))&(mo*2+z(r))<=u(j,2))|(u(j,1)<=(z(r)-mo*2)&(z(r)-mo*2)<=u(j,2))) zz(r+1)=up(j); elseif ((u(j,1)<=(mo/2+z(r))&(mo/2+z(r))<=u(j,2))|(u(j,1)<=(z(r)-mo/2)&(z(r)-mo/2)<=u(j,2))) zz(r+1)=down(j); else zz(r+1)=mid(j); end elseif (((z(r)-z(r-1))-(z(r-1)-z(r-2)))<0) if ((u(j,1)<=(mo/2+z(r))&(mo/2+z(r))<=u(j,2))|(u(j,1)<=(z(r)-mo/2)&(z(r)-mo/2)<=u(j,2))) zz(r+1)=down(j); elseif ((u(j,1)<=(mo*2+z(r))&(mo*2+z(r))<=u(j,2))|(u(j,1)<=(z(r)-mo*2)&(z(r)-mo*2)<=u(j,2))) zz(r+1)=up(j); else zz(r+1)=mid(j); end end elseif (j<i) mo=abs((z(r)-z(r-1))-(z(r-1)-z(r-2))); if (((z(r)-z(r-1))-(z(r-1)-z(r-2)))>0) if((u(j,1)<=(mo*2+z(r))&(mo*2+z(r))<=u(j,2))|(u(j,1)<=(z(r)-mo*2)&(z(r)-mo*2)<=u(j,2))) zz(r+1)=up(j); elseif ((u(j,1)<=(mo/2+z(r))&(mo/2+z(r))<=u(j,2))|(u(j,1)<=(z(r)-mo/2)&(z(r)-mo/2)<=u(j,2))) zz(r+1)=down(j); else zz(r+1)=mid(j); end elseif (((z(r)-z(r-1))-(z(r-1)-z(r-2)))<0) if ((u(j,1)<=(mo/2+z(r))&(mo/2+z(r))<=u(j,2))|(u(j,1)<=(z(r)-mo/2)&(z(r)-mo/2)<=u(j,2))) zz(r+1)=down(j); elseif ((u(j,1)<=(mo*2+z(r))&(mo*2+z(r))<=u(j,2))|(u(j,1)<=(z(r)-mo*2)&(z(r)-mo*2)<=u(j,2))) zz(r+1)=up(j); else zz(r+1)=mid(j); end end else mo=abs((z(r)-z(r-1))-(z(r-1)-z(r-2))); if (((z(r)-z(r-1))-(z(r-1)-z(r-2)))>0) if((u(j,1)<=(mo*2+z(r))&(mo*2+z(r))<=u(j,2))|(u(j,1)<=(z(r)-mo*2)&(z(r)-mo*2)<=u(j,2))) zz(r+1)=up(j); elseif ((u(j,1)<=(mo/2+z(r))&(mo/2+z(r))<=u(j,2))|(u(j,1)<=(z(r)-mo/2)&(z(r)-mo/2)<=u(j,2))) zz(r+1)=down(j); else zz(r+1)=mid(j); end elseif (((z(r)-z(r-1))-(z(r-1)-z(r-2)))<0) if ((u(j,1)<=(mo/2+z(r))&(mo/2+z(r))<=u(j,2))|(u(j,1)<=(z(r)-mo/2)&(z(r)-mo/2)<=u(j,2))) zz(r+1)=down(j); elseif ((u(j,1)<=(mo*2+z(r))&(mo*2+z(r))<=u(j,2))|(u(j,1)<=(z(r)-mo*2)&(z(r)-mo*2)<=u(j,2))) zz(r+1)=up(j); else zz(r+1)=mid(j); end end end end end end end end zz(1)=z(1); for i=2:n(nn) g2(i)=zz(i)*zz(i-1); end k2=sum(g2,2); num2= (n(nn)-2)*k2; for i=3:n(nn) f2(i)=zz(i-1)*zz(i-1); end p2=sum(f2,2); den2=(n(nn)-1)*p2; index1=index1+1; ma(index1)=n(nn); mb(index1)=phi(tt); phihat(index1)=num/den; phihat2(index1)=num2/den2; def(index1)=phihat2(index1)-phihat(index1); end for i=1:(o) table(i,:)=horzcat(ma(i),mb(i),phihat(i),phihat2(i),def(i)); end num2str(table,'% .4f') for i=1:(nn) da(i)=(phihat(i)-phi).^2; db(i)=(phihat2(i)-phi).^2; end ASD(tt)=sum (da)/(o) BSD(tt)=sum (db)/(o) end
1 个评论
Image Analyst
2016-8-31
Just attach with the paper clip icon, or see this http://www.mathworks.com/matlabcentral/answers/13205#answer_18099
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Software Development Tools 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!