借助数学和图解法,找到等式y = mx + c的m和c。 y是data_model_1,x是时间。 避免使用诸如fitlm之类的其他matlab函数,因为这样做会达到目的。
我无法找到常数m和c。我试图通过将它们限制在一个范围内来找到m和c(基于智能猜测),我需要根据平均误差范围来推导m和c值。平均误差范围最接近0的点应该是我的m和c值。
load(file)
figure
plot(time,data_model_1,'bo')
hold on
for a = 0.11:0.01:0.13
c = -13:0.1:-10
data_a = a * time + c ;
plot(time,data_a,'r');
end
figure
hold on
for a = 0.11:0.01:0.13
c = -13:0.1:-10
data_a = a * time + c ;
mean_range = mean(abs(data_a - data_model_1));
plot(a,mean_range,'b.')
end
答案 0 :(得分:0)
您可以使用m
快速获得c
和fminsearch
。在下面的第一个示例中,误差函数是平方误差之和(SSE)。第二个示例使用绝对误差之和。这里的关键是确保误差函数是凸的。
请注意,c = Beta(1)
和m = Beta(2)
。
可复制的示例(MATLAB代码):
% Generate some data
N = 50;
X = 2 + 13*random(makedist('Beta',.7,.8),N,1);
Y = 5 + 1.5.*X + randn(N,1);
% Example 1
SSEh =@(Beta) sum((Y - (Beta(1) + (Beta(2).*X))).^2);
Beta0 = [0.5 0.5]; % Initial Guess
[Beta SSE] = fminsearch(SSEh,Beta0)
% Example 2
SAEh =@(Beta) sum(abs(Y-(Beta(1) + Beta(2).*X)));
[Beta SumAbsErr] = fminsearch(SAEh,Beta0)