誰かがMATLABを使ってこれを関数に書くのを手伝ってもらえますか?以下のコードを関数に変換することができますか?
for i=1:50
E(i+1)=E(i)+((W(i)[Sin[α(i)]-Tan[ϕ]Cos[α(i)]/F]-c*l/F))/(Cos[α(i)]+(Tan[ϕ]Sin[α(i)]/F))
end
誰かがMATLABを使ってこれを関数に書くのを手伝ってもらえますか?以下のコードを関数に変換することができますか?
for i=1:50
E(i+1)=E(i)+((W(i)[Sin[α(i)]-Tan[ϕ]Cos[α(i)]/F]-c*l/F))/(Cos[α(i)]+(Tan[ϕ]Sin[α(i)]/F))
end
は、私はあなたが次の式を取得したいと思う:
E = cumsum(((W.*(sin(a)-tan(phi).*cos(a)./F)-c.*l./F))./(cos(a)+(tan(phi).*sin(a)./F)));
この方法では、あなたがループのためには必要ありません。 配列またはスカラーとしてW
,a
、phi
、F
、c
およびl
を入力できます。配置する配列はすべて同じサイズでなければなりません。あなたのケースでは
、私はphi
、F
、c
とl
はスカラーになりながらW
とa
は[50x1]配列であると考えています。
スクリプトとして実行する場合:
for ii=1:50
E(ii+1)=E(ii)+((W(ii)[sin(alpha(ii))-tan(phi)*cos(alpha(ii)]/F)-c*l/F))/(cos{alpha(ii))+(Tan[phi]Sin[alpha(ii)]/F))
end
すべての変数(E(1)、W、... は親ワークスペースに定義されている必要があり
したい場合。関数としてそれを実行するには:
function[E]=FooBar(F,alpha)
%% define variables thet are not inputs
E=zeros(50,1);
W=rand(50,1);
phi=rand;
c=rand;
l=rand;
for ii=1:50
E(ii+1)=E(ii)+((W(ii)*(sin(alpha(ii))-tan(phi)*cos(alpha(ii))/F)-c*l/F))/(cos{alpha(ii))+(tan(phi)*sin(alpha(ii))/F))
end
EDIT このような機能を作成することをお勧めします。
function[E]=MainFoo()
%% Code for necessary variables...
W=FooW(Winput1,Winput2);
alpha=FooAlpha(AlphaInput1,AlphaInput2);
%% other parameters calculated by Foo*** functions
E=FooE(E1,W,alpha,phi,F,c,l);
%% Nested function
function[WW]=FooW(Win1,Win2)
%% code to calculate W
end
function[Alpha]=FooAlpha(AlIn1,AlIn2)
%% code to calculate alpha
end
%%Other Foo*** functions
function[OutE]FooE(E0,Ws,Alphs,Phi,FF,cc,ll)
OutE=zeros(50,1);
OutE(1)=E0;
for ii=1:50
OutE(ii+1)=OutE(ii)+((Ws(ii)*(sin(Alphs(ii))-tan(Phi)*cos(Alphs(ii)]/FF)-cc*ll/FF))/(cos(Alphs(ii))+(tan(Phi)Sin[Alphs(ii)]/FF));
end
end
end
はい、できます。しかし、あなたはどんな機能を探していますか? – Crowley
私はあなたが言っていることを完全に理解していません。私は上記のMATLABのスクリプトとして実行するように言うことを意味した。ありがとうございます –
関数とスクリプトは、両方とも '.m'ファイル形式で保存されたmatlabetの2つの非常に異なる構造です。関数は値を返す可能性があり、**は親ワークスペースと変数を共有せず、ネストされた関数を含むことがあります。スクリプト**は値を返しません。**はネストされた関数を含むことができません。**は親ワークスペースと変数を完全に共有します**。私は何が入力されているのか、何が返されるのかなどを尋ねています。 – Crowley