我有一组嘈杂的数据,并希望在MATLAB中使用自定义方程。接下来,我将采用系数的值并在我的算法中使用它们。但是我被卡住了,我无法弄清楚为什么。我使用非线性方程a + b * log10(x1-dcos(alpha-x2)),其中x1,x2和响应值是已知的。第一个问题是a,b和alpha的系数必须是有界的。这里以度为单位的alpha只能在0到360之间变化。我不知道如何使用曲线拟合工具箱来实现这一点。
我还尝试了其他选项,如MATLAB中的非线性回归技术(fitnlm,lsqcurvefit等),这些选项被证明是令人失望的,因为我无法限制这些变量。因此,尽管非常合适,但系数太差了。
所以,问题1:如何使用曲线拟合拟合多个变量? 问题2:如果那不可能那么我可以使用除非线性回归之外的其他技术。
提前许多事!祝你有美好的一天!
答案 0 :(得分:1)
好吧如果我遇到你的问题,你有一组数据,对于变量x1和x2以及你的结果y,你想用这个等式对它进行建模:
public class LoginServiceImpl extends RemoteServiceServlet implements LoginService {
public void loginUser(String login, String password) {
UserContext.get().pushSubject(
UserContext.createSubject(connection, login, password, null)
);
}
}
首先,我将为此值创建数据:
y = a + b * log10(x1 - cosd(alpha - x2)) % I suppose that dcos = cosd, I do not really known this functions
现在让我们生成de数据集
function y = getting_data(x1,x2)
a = 3;
b = 5;
alpha = 120;
y = a + b * log10(x1 - cosd(alpha - x2));
创建一个为您的模型使用曲线拟合的函数
>> % generate the data sets
>> x1 = 9 .* rand(1000,1) + 1; % random values [1,10]
>> x2 = 360 .* rand(1000,1); % random values [0,360]
>> y = getting_data(x1,x2); % the values for the function
要小心输入向量,它应该是nx1到拟合函数
最后得到系数:
function myfit = fitting_data(x1,x2,y)
myfittype = fittype('a + b * log10(x1 - cosd(alpha - x2))',...
'dependent',{'y'},'independent',{'x1','x2'},...
'coefficients',{'a','b','alpha'})
myfit = fit([x1 x2],y,myfittype)
代表我们猜测的值
这样选择separe de con(A - B)也很有用:
还要记住