我在以下等式中有语法错误:
((Cs+Cf)*u(1)/Cf-Cs*u(2)/Cf)*(1/(1+(Cs+Cf)/(Cf*(10^(u0/20)))))*(1-exp(-(pi*f1*(10^9)/(fs*10^6))*(Cf/(Cs+Cf)+1/(10^(u0/20)))))
检查大写/小写,它们没问题。可能是什么问题?
答案 0 :(得分:1)
mentioned的文档中的Interpreted MATLAB Function,
解释的MATLAB功能块接受一个实数或复数 输入类型为double ...
您正在使用多个输入 Cs
,Cf
,u0
,u
,f1
和fs
。
如何解决?
解决方案-1 :使用Interpreted MATLAB Function block
解决这个问题的一种方法是将所有输入矩阵连接成一个矩阵,并使用其索引来表示等式中的每个值。
e.g;如果你有:
u=[1 5]; u0=5; Cs=1; Cf=1; f1=1; fs=20;
将它们连接到工作区中的单个矩阵中。如下所示:
new=[u, u0, Cs, Cf, f1, fs];
%It could be different depending on the dimensions of these
%variables that you actually have
然后根据 Interpreted MATLAB Function block 中new
的索引使用以下等式:
((new(4)+new(5))*u(1)/new(5)-new(4)*u(2)/new(5))*(1/(1+(new(4)+new(5))/(new(5)*(10^(new(3)/20)))))*(1-exp(-(pi*new(6)*(10^9)/(new(7)*10^6))*(new(5)/(new(4)+new(5))+1/(10^(new(3)/20)))))
解决方案-2 :使用MATLAB Function block
您还可以使用可以使用多个输入的MATLAB Function block。对于您的情况,请在其中编写以下代码:
function y = foo(u,u0,Cs,Cf,f1,fs)
y = ((Cs+Cf)*u(1)/Cf-Cs*u(2)/Cf)*(1/(1+(Cs+Cf)/(Cf*(10^(u0/20)))))* ...
(1-exp(-(pi*f1*(10^9)/(fs*10^6))*(Cf/(Cs+Cf)+1/(10^(u0/20)))));
并使用其输入连接 Constant块,并使常量的值等于您要使用的相应变量。