有人可以帮我把它写成一个使用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
答案 0 :(得分:0)
我想你想得到以下公式:
E = cumsum(((W.*(sin(a)-tan(phi).*cos(a)./F)-c.*l./F))./(cos(a)+(tan(phi).*sin(a)./F)));
这样,您不需要for循环。
您可以输入W
,a
,phi
,F
,c
和l
作为数组或标量。您放置的所有阵列必须大小相同。
在您的情况下,我相信W
和a
将是[50x1]数组而phi
,F
,c
和{{1}将是标量。
答案 1 :(得分:0)
如果您想将其作为脚本运行:
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
修改强> 我建议创建这样的功能:
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