错误在于
行myfittype = fittype("A*cos(omega_0*t+phi)",dependent="A" "omega_0" "phi",independent="t",coefficients=["A" "omega_0" "phi"]);
出现以下错误消息:
File: TOungedsurfacefit.m Line: 15 Column: 58
Invalid use of operator.
我按照行错误修复消息中的建议添加了一个分号,但它没有改变任何内容 s & t 的数据类型是双精度数,它们都是 400x1 矩阵,又称工作区中垂直导入的列向量。我还看到,缺少一个闭合括号,但我也添加了它,并且仍然发生错误。如何进行?如果有任何进一步的帮助,我将不胜感激!我是 matlab 初学者,不幸的是什么都不知道。
p=pi;
T= 3.95;
omega_0 = (2*p)/T;
fo = fitoptions('Method','NonlinearLeastSquares','Lower',[-500,500],'Upper',[Inf,max(s)],'StartPoint',[-500,500]);
%alternative:fo = fitoptions('Method','NonlinearLeastSquares','Lower',[-500,500],'Upper',[Inf,max(s)],'StartPoint',[-500,500]);
x = t;
y = s;
myfittype = fittype("A*cos(omega_0*t+phi)",dependent="A" "omega_0" "phi",independent="t",coefficients=["A" "omega_0" "phi"]);
myfit = fit(t',myfittype);
plot(myfit,t);
xdft = fft(t);
camp = 2/length(t)*xdft(t);
phi = angle(camp);
A= abs(camp);
一般来说,t是x值,s是y值。我已将数据表导入为列向量。
您正在使用 MATLAB 的命名参数和字符串类型,这不是 MATLAB 最标准的用法(不是您的错,您正在使用文档)。
正确的语法是:
myfittype = fittype("A*cos(omega_0*t+phi)",dependent=["A", "omega_0", "phi"],independent="t",coefficients=["A", "omega_0", "phi"]);
如有疑问,请始终在数组周围添加逗号和括号。
这对我来说仍然是错误,因为你的代码不完整,所以我没有
s
,t
,但A
都没有。