Hi i want to know how i can vectorize my code so it be executed faster?
1 view (last 30 days)
Show older comments
function out=A(lam,N,P,n,k,w,L,d,th_i,ai,si,fi,gi)
w=2*pi./lam.*w; k=2*pi./lam.*k;
L=2*pi./lam.*L; d=2*pi./lam.*d;
M=length(ai);
n0=n(1); n1=n(2); n2=n(3); n3=n(4);
g0=sqrt(((cos(th_i))+(2.*pi/L.*(-P:P))).^2-n0^2);
g1=sqrt(((cos(th_i))+(2.*pi/L.*(-P:P))).^2-n1^2);
g2=sqrt(((cos(th_i))+(2.*pi/L.*(-P:P))).^2-n2^2);
g3=sqrt(((cos(th_i))+(2.*pi/L.*(-N:N))).^2-n3^2);
% g_i=k_0*g_i
Jmax=max(2*N,N+P);
J=-Jmax:Jmax;
J(Jmax+1)=1;
if M==1
J1=1./(j*2*pi.*J).*exp(j*2*pi.*J.*ai).*(exp(j*2*pi.*J.*si)-1);
else
J1=1./(j*2*pi.*J).*sum(exp(j*2*pi.*ai'*J).*(exp(j*2*pi.*(si'*J))-1));
end
J1(Jmax+1)=sum(si);
% Matrix J1mn is matrix J1_m-n with rows constant m, columns constant n
J1mn=-N:N;
J1mn=J1mn(ones(2*N+1,1),:);
J1mn=J1mn.'-J1mn;
J1mn=J1(J1mn+Jmax+1);
J1mn=[J1mn J1mn;J1mn J1mn];
% Matrix P1mn containing dependance from discontinuities versus x
P1=g3(ones(2*N+1,1),:);
P1=[P1.'+P1 P1.'-P1; -P1.'+P1 -P1.'-P1];
for m=1:2*N+1
for n=1:2*N+1
I1mn_mat=I1mn(P1(m,n),N,w,k,L,d,ai,si,fi,gi);
P1mn(m,n)=(exp(P1(m,n).*(d-k)).*J1mn(m,n)-I1mn_mat(m,n))./P1(m,n);
I1mn_mat=I1mn(P1(m+2*N+1,n+2*N+1),N,w,k,L,d,ai,si,fi,gi);
P1mn(m+2*N+1,n+2*N+1)=(exp(P1(m+2*N+1,n+2*N+1).*(d-k)).*J1mn(m+2*N+1,n+2*N+1)-I1mn_mat(m,n))./P1(m+2*N+1,n+2*N+1);
if (m~=n)
I1mn_mat=I1mn(P1(m,n+2*N+1),N,w,k,L,d,ai,si,fi,gi);
P1mn(m,n+2*N+1)=(exp(P1(m,n+2*N+1).*(d-k)).*J1mn(m,n+2*N+1)-I1mn_mat(m,n))./P1(m,n+2*N+1);
I1mn_mat=I1mn(P1(m+2*N+1,n),N,w,k,L,d,ai,si,fi,gi);
P1mn(m+2*N+1,n)=(exp(P1(m+2*N+1,n).*(d-k)).*J1mn(m+2*N+1,n)-I1mn_mat(m,n))./P1(m+2*N+1,n);
end
if (m==n)
I0mn_mat=I0mn(N,w,k,L,d,ai,si,fi,gi);
P1mn(m,m+2*N+1)=(d-k)*J1mn(m,m+2*N+1)-I0mn_mat(m,m);
P1mn(m+2*N+1,m)=(d-k)*J1mn(m+2*N+1,m)-I0mn_mat(m,m);
end
end
end
J11mp=J1mp(N,P,ai,si);
J11pn=J1pn(N,P,ai,si);
for m=-N:N
for n=-N:N
for p=-P:P
g0p=g0(p+P+1); g1p=g1(p+P+1); g2p=g2(p+P+1); g3m=g3(m+N+1); g3n=g3(n+N+1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%m+n+
I1mp_pp=I1mp(+g3m+g1p,N,P,w,k,L,d,ai,si,fi,gi);
I1mp_pm=I1mp(+g3m-g1p,N,P,w,k,L,d,ai,si,fi,gi);
R1pp(m+N+1,n+N+1,p+P+1)=((PE(g2p,g1p,2*d)+PO(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(+g3m-g1p)*(exp((+g3m+g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_pp(m+N+1,p+P+1))+...
((PO(g2p,g1p,2*d)-PE(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(+g3m+g1p)*(exp((+g3m-g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_pm(m+N+1,p+P+1));
R2pp(m+N+1,n+N+1,p+P+1)=((PO(g0p,g1p,2*d)-PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(+g3n-g1p)*(exp((+g3n+g1p).*(d-k))*J11pn(p+P+1,n+N+1))+...
((PO(g0p,g1p,2*d)+PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(+g3n+g1p)*(exp((+g3n-g1p).*(d-k))*J11pn(p+P+1,n+N+1));
I1mp_pp=I1mp(+g3m+g1p,N,P,w,k,L,d,ai,si,fi,gi);
I1mp_pm=I1mp(+g3m-g1p,N,P,w,k,L,d,ai,si,fi,gi);
R3pp(m+N+1,n+N+1,p+P+1)=((PO(g0p,g1p,2*d)-PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(+g3m-g1p)*(exp((+g3m+g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_pp(m+N+1,p+P+1))+...
((PO(g0p,g1p,2*d)+PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(+g3m+g1p)*(exp((+g3m-g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_pm(m+N+1,p+P+1));
I1pn_pp=I1pn(+g3n+g1p,N,P,w,k,L,d,ai,si,fi,gi);
I1pn_pm=I1pn(+g3n-g1p,N,P,w,k,L,d,ai,si,fi,gi);
R4pp(m+N+1,n+N+1,p+P+1)=((PO(g2p,g1p,2*d)+PE(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(+g3n-g1p)*I1pn_pp(p+P+1,n+N+1)+...
((PO(g2p,g1p,2*d)-PE(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(+g3n+g1p)*I1pn_pm(p+P+1,n+N+1);
Rpp(m+N+1,n+N+1,p+P+1)=(R1pp(m+N+1,n+N+1,p+P+1)*R2pp(m+N+1,n+N+1,p+P+1)-...
R3pp(m+N+1,n+N+1,p+P+1)*R4pp(m+N+1,n+N+1,p+P+1))*...
PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)*PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)...
/(8*g1p*OE(g0p,g2p,g1p,2*d)*(g3m.^2-g1p^2));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%m+n-
I1mp_pp=I1mp(+g3m+g1p,N,P,w,k,L,d,ai,si,fi,gi);
I1mp_pm=I1mp(+g3m-g1p,N,P,w,k,L,d,ai,si,fi,gi);
R1pm(m+N+1,n+N+1,p+P+1)=((PE(g2p,g1p,2*d)+PO(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(+g3m-g1p)*(exp((+g3m+g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_pp(m+N+1,p+P+1))+...
((PO(g2p,g1p,2*d)-PE(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(+g3m+g1p)*(exp((+g3m-g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_pm(m+N+1,p+P+1));
R2pm(m+N+1,n+N+1,p+P+1)=((PO(g0p,g1p,2*d)-PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(-g3n-g1p)*(exp((-g3n+g1p).*(d-k))*J11pn(p+P+1,n+N+1))+...
((PO(g0p,g1p,2*d)+PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(-g3n+g1p)*(exp((-g3n-g1p).*(d-k))*J11pn(p+P+1,n+N+1));
I1mp_pp=I1mp(+g3m+g1p,N,P,w,k,L,d,ai,si,fi,gi);
I1mp_pm=I1mp(+g3m-g1p,N,P,w,k,L,d,ai,si,fi,gi);
R3pm(m+N+1,n+N+1,p+P+1)=((PO(g0p,g1p,2*d)-PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(+g3m-g1p)*(exp((+g3m+g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_pp(m+N+1,p+P+1))+...
((PO(g0p,g1p,2*d)+PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(+g3m+g1p)*(exp((+g3m-g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_pm(m+N+1,p+P+1));
I1pn_mp=I1pn(-g3n+g1p,N,P,w,k,L,d,ai,si,fi,gi);
I1pn_mm=I1pn(-g3n-g1p,N,P,w,k,L,d,ai,si,fi,gi);
R4pm(m+N+1,n+N+1,p+P+1)=((PO(g2p,g1p,2*d)+PE(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(-g3n-g1p)*I1pn_mp(p+P+1,n+N+1)+...
((PO(g2p,g1p,2*d)-PE(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(-g3n+g1p)*I1pn_mm(p+P+1,n+N+1);
Rpm(m+N+1,n+N+1,p+P+1)=(R1pm(m+N+1,n+N+1,p+P+1)*R2pm(m+N+1,n+N+1,p+P+1)-...
R3pm(m+N+1,n+N+1,p+P+1)*R4pm(m+N+1,n+N+1,p+P+1))*...
PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)*PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)...
/(8*g1p*OE(g0p,g2p,g1p,2*d)*(g3m.^2-g1p^2));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%m-n+
I1mp_mp=I1mp(-g3m+g1p,N,P,w,k,L,d,ai,si,fi,gi);
I1mp_mm=I1mp(-g3m-g1p,N,P,w,k,L,d,ai,si,fi,gi);
R1mp(m+N+1,n+N+1,p+P+1)=((PE(g2p,g1p,2*d)+PO(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(-g3m-g1p)*(exp((-g3m+g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_mp(m+N+1,p+P+1))+...
((PO(g2p,g1p,2*d)-PE(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(-g3m+g1p)*(exp((-g3m-g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_mm(m+N+1,p+P+1));
R2mp(m+N+1,n+N+1,p+P+1)=((PO(g0p,g1p,2*d)-PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(+g3n-g1p)*(exp((+g3n+g1p).*(d-k))*J11pn(p+P+1,n+N+1))+...
((PO(g0p,g1p,2*d)+PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(+g3n+g1p)*(exp((+g3n-g1p).*(d-k))*J11pn(p+P+1,n+N+1));
I1mp_mp=I1mp(-g3m+g1p,N,P,w,k,L,d,ai,si,fi,gi);
I1mp_mm=I1mp(-g3m-g1p,N,P,w,k,L,d,ai,si,fi,gi);
R3mp(m+N+1,n+N+1,p+P+1)=((PO(g0p,g1p,2*d)-PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(-g3m-g1p)*(exp((-g3m+g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_mp(m+N+1,p+P+1))+...
((PO(g0p,g1p,2*d)+PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(-g3m+g1p)*(exp((-g3m-g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_mm(m+N+1,p+P+1));
I1pn_pp=I1pn(+g3n+g1p,N,P,w,k,L,d,ai,si,fi,gi);
I1pn_pm=I1pn(+g3n-g1p,N,P,w,k,L,d,ai,si,fi,gi);
R4mp(m+N+1,n+N+1,p+P+1)=((PO(g2p,g1p,2*d)+PE(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(+g3n-g1p)*I1pn_pp(p+P+1,n+N+1)+...
((PO(g2p,g1p,2*d)-PE(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(+g3n+g1p)*I1pn_pm(p+P+1,n+N+1);
Rmp(m+N+1,n+N+1,p+P+1)=(R1mp(m+N+1,n+N+1,p+P+1)*R2mp(m+N+1,n+N+1,p+P+1)-...
R3mp(m+N+1,n+N+1,p+P+1)*R4mp(m+N+1,n+N+1,p+P+1))*...
PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)*PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)...
/(8*g1p*OE(g0p,g2p,g1p,2*d)*(g3m.^2-g1p^2));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%m-n-
I1mp_mp=I1mp(-g3m+g1p,N,P,w,k,L,d,ai,si,fi,gi);
I1mp_mm=I1mp(-g3m-g1p,N,P,w,k,L,d,ai,si,fi,gi);
R1mm(m+N+1,n+N+1,p+P+1)=((PE(g2p,g1p,2*d)+PO(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(-g3m-g1p)*(exp((-g3m+g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_mp(m+N+1,p+P+1))+...
((PO(g2p,g1p,2*d)-PE(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(-g3m+g1p)*(exp((-g3m-g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_mm(m+N+1,p+P+1));
R2mm(m+N+1,n+N+1,p+P+1)=((PO(g0p,g1p,2*d)-PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(-g3n-g1p)*(exp((-g3n+g1p).*(d-k))*J11pn(p+P+1,n+N+1))+...
((PO(g0p,g1p,2*d)+PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(-g3n+g1p)*(exp((-g3n-g1p).*(d-k))*J11pn(p+P+1,n+N+1));
I1mp_mp=I1mp(-g3m+g1p,N,P,w,k,L,d,ai,si,fi,gi);
I1mp_mm=I1mp(-g3m-g1p,N,P,w,k,L,d,ai,si,fi,gi);
R3mm(m+N+1,n+N+1,p+P+1)=((PO(g0p,g1p,2*d)-PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(-g3m-g1p)*(exp((-g3m+g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_mp(m+N+1,p+P+1))+...
((PO(g0p,g1p,2*d)+PE(g0p,g1p,2*d))/(PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)))*(-g3m+g1p)*(exp((-g3m-g1p).*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_mm(m+N+1,p+P+1));
I1pn_mp=I1pn(-g3n+g1p,N,P,w,k,L,d,ai,si,fi,gi);
I1pn_mm=I1pn(-g3n-g1p,N,P,w,k,L,d,ai,si,fi,gi);
R4mm(m+N+1,n+N+1,p+P+1)=((PO(g2p,g1p,2*d)+PE(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(-g3n-g1p)*I1pn_mp(p+P+1,n+N+1)+...
((PO(g2p,g1p,2*d)-PE(g2p,g1p,2*d))/(PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)))*(-g3n+g1p)*I1pn_mm(p+P+1,n+N+1);
Rmm(m+N+1,n+N+1,p+P+1)=(R1mm(m+N+1,n+N+1,p+P+1)*R2mm(m+N+1,n+N+1,p+P+1)-...
R3mm(m+N+1,n+N+1,p+P+1)*R4mm(m+N+1,n+N+1,p+P+1))*...
PE(g2p,g1p,2*d)*PO(g2p,g1p,2*d)*PE(g0p,g1p,2*d)*PO(g0p,g1p,2*d)...
/(8*g1p*OE(g0p,g2p,g1p,2*d)*(g3m.^2-g1p^2));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Rpp1(m+N+1,n+N+1,p+P+1)=(n3^2-n1^2)/(g3n^2-g1p^2)*Rpp(m+N+1,n+N+1,p+P+1);
Rpm1(m+N+1,n+N+1,p+P+1)=(n3^2-n1^2)/(g3n^2-g1p^2)*Rpm(m+N+1,n+N+1,p+P+1);
Rmp1(m+N+1,n+N+1,p+P+1)=(n3^2-n1^2)/(g3n^2-g1p^2)*Rmp(m+N+1,n+N+1,p+P+1);
Rmm1(m+N+1,n+N+1,p+P+1)=(n3^2-n1^2)/(g3n^2-g1p^2)*Rmm(m+N+1,n+N+1,p+P+1);
R1=[Rpp1, Rpm1; Rmp1, Rmm1];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
I1mp_pp=I1mp(+g3m+g3n,N,P,w,k,L,d,ai,si,fi,gi);
Ppp(m+N+1,n+N+1,p+P+1)=(exp((+g3m+g3n)*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_pp(m+N+1,p+P+1))/(+g3m+g3n);
I1mp_mm=I1mp(-g3m-g3n,N,P,w,k,L,d,ai,si,fi,gi);
Pmm(m+N+1,n+N+1,p+P+1)=(exp((-g3m-g3n)*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_mm(m+N+1,p+P+1))/(-g3m-g3n);
if (m~=n)
I1mp_pm=I1mp(+g3m-g3n,N,P,w,k,L,d,ai,si,fi,gi);
Ppm(m+N+1,n+N+1,p+P+1)=(exp((+g3m-g3n)*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_pm(m+N+1,p+P+1))/(+g3m-g3n);
I1mp_mp=I1mp(-g3m+g3n,N,P,w,k,L,d,ai,si,fi,gi);
Pmp(m+N+1,n+N+1,p+P+1)=(exp((-g3m+g3n)*(d-k))*J11mp(m+N+1,p+P+1)-I1mp_mp(m+N+1,p+P+1))/(-g3m+g3n);
end
if (m==n)
I0mp1=I0mp(N,P,w,k,L,d,ai,si,fi,gi);
Ppm(m+N+1,n+N+1,p+P+1)=(d-k)*J11mp(m+N+1,p+P+1)-I0mp1(m+N+1,p+P+1);
Pmp(m+N+1,n+N+1,p+P+1)=(d-k)*J11mp(m+N+1,p+P+1)-I0mp1(m+N+1,p+P+1);
end
Ppp1(m+N+1,n+N+1,p+P+1)=(n3^2-n1^2)/(g3n^2-g1p^2)*J11pn(p+P+1,n+N+1)*Ppp(m+N+1,n+N+1,p+P+1);
Ppm1(m+N+1,n+N+1,p+P+1)=(n3^2-n1^2)/(g3n^2-g1p^2)*J11pn(p+P+1,n+N+1)*Ppm(m+N+1,n+N+1,p+P+1);
Pmp1(m+N+1,n+N+1,p+P+1)=(n3^2-n1^2)/(g3n^2-g1p^2)*J11pn(p+P+1,n+N+1)*Pmp(m+N+1,n+N+1,p+P+1);
Pmm1(m+N+1,n+N+1,p+P+1)=(n3^2-n1^2)/(g3n^2-g1p^2)*J11pn(p+P+1,n+N+1)*Pmm(m+N+1,n+N+1,p+P+1);
P1=[Ppp1, Ppm1; Pmp1, Pmm1];
end
end
end
PR1=sum(-P1+R1,3);
out=-P1mn+PR1;
end
function out=PE(f,g,d)
out=(f.*cosh(g.*d./2))+(g.*sinh(g.*d./2));
end
function out=PO(f,g,d)
out=(g.*cosh(g.*d./2))+(f.*sinh(g.*d./2));
end
function out=OE(e,f,g,d)
out=(PE(e,g,d)*PO(f,g,d)+PO(e,g,d)*PE(f,g,d))/2;
end
2 Comments
Guillaume
on 11 Nov 2018
I seriously doubt anyone will bother trying to understand your code unless forced to. For a start, there's not a single comment explaining what it does. A good way to write a function is to first document it: what it does, how it does it, what are the inputs and outputs, what are the restrictions on these inputs (size, type, etc.). Something like:
function velocity = bridgeofdoom(swallowtype, airdensity)
%BRIDGEOFDOOM: calculate the air speed velocity of an unladen swallow
%Takes into account the type of swallow and the air density to calculate the velocity
%inputs:
% swallowtype: the type of swallow. Scalar string or char array. Can either be 'european' or 'african'
% airdensity: the air density in kg/m3. Positive numeric scalar
%outputs:
% velocity: air speed velocity of the bird in m/s. Numeric scalar.
David Goodmanson
on 12 Nov 2018
Hi Guillaume. Would you like to share your favorite color? No pressure.
Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!