Save outputs of nested for loops in MATLAB -


i have following codes wish have output matrix rpp of (10201,3). run code (which takes bit long) check matrix size of rpp , see (1,3), tried many things couldn't find proper way. logic of codes take 6 values (contain 4 constant values , 2 variable values (chosen 101 values)) , make calculation 3 different i1 , store every output vector of 3 in matrix (101*101 (pairs of 2 variable values)) rows , 3 (for each i1) columns.

i appreciate help

    vp1=linspace(3000,3500,101);     vp2=3850;     rho1=2390;     rho2=2510;     vs1=linspace(1250,1750,101);     vs2=2000;     i1=[10 25 40];       rpp = zeros(length(vp1)*length(vs1),length (i1));      n=1:length(vp1)*length(vs1)     m=1:length (i1)     l=1:length(vp1)         k=1:length(vs1)              p=sin(i1)/vp1(l);            i2=asin(p*vp2);            j1=asin(p*vs1(k));            j2=asin(p*vs2);            a=rho2*(1-2*vs2^2*p.^2)-rho1*(1-2*vs1(k).^2*p.^2);            b=rho2*(1-2*vs2^2*p.^2)+2*rho1*vs1(k)^2*p.^2;            c=rho1*(1-2*vs1(k)^2*p.^2)+2*rho2*vs2^2*p.^2;            d=2*(rho2*vs2^2-rho1*vs1(k)^2);            e=b.*cos(i1)./vp1(l)+c.*cos(i2)/vp2;            f=b.*cos(j1)./vs1(k)+c.*cos(j2)/vs2;            g=a-d*(cos(i1)/vp1(l)).*(cos(j2)/vs2);            h=a-d*(cos(i2)/vp2).*(cos(j1)/vs1(k));            d=e.*f+g.*h.*p.^2;            rpp=((b.*(cos(i1)/vp1(l))-c.*cos((i2)/vp2)).*f-(a+d*((cos(i1)/vp1(l))).*(cos(j2)/vs2)).*h.*p.^2)./d         end     end     end     end 

the way use loop wrong. you're running calculation length(vp1)*length(vs1) * length (i1) * length(vp1) * length(vs1) times. here's correct way. changed l lll won't confuse number 1. in each iteration of first loop, you're running length(vs1) times, , need assign result (a 1x3 array) rpp using row number specified k+(lll-1)*length(vp1).

for lll=1:length(vp1)     k=1:length(vs1)        p=sin(i1)/vp1(lll);        i2=asin(p*vp2);        j1=asin(p*vs1(k));        j2=asin(p*vs2);        a=rho2*(1-2*vs2^2*p.^2)-rho1*(1-2*vs1(k).^2*p.^2);        b=rho2*(1-2*vs2^2*p.^2)+2*rho1*vs1(k)^2*p.^2;        c=rho1*(1-2*vs1(k)^2*p.^2)+2*rho2*vs2^2*p.^2;        d=2*(rho2*vs2^2-rho1*vs1(k)^2);        e=b.*cos(i1)./vp1(lll)+c.*cos(i2)/vp2;        f=b.*cos(j1)./vs1(k)+c.*cos(j2)/vs2;        g=a-d*(cos(i1)/vp1(lll)).*(cos(j2)/vs2);        h=a-d*(cos(i2)/vp2).*(cos(j1)/vs1(k));        d=e.*f+g.*h.*p.^2;        rpp(k+(lll-1)*length(vp1),:)=((b.*(cos(i1)/vp1(lll))-c.*cos((i2)/vp2)).*f-(a+d*((cos(i1)/vp1(lll))).*(cos(j2)/vs2)).*h.*p.^2)./d;     end end 

Comments

Popular posts from this blog

dns - How To Use Custom Nameserver On Free Cloudflare? -

python - Pygame screen.blit not working -

c# - Web API response xml language -