利用Matlab图找到线性方程常数

时间:2018-10-08 15:02:50

标签: matlab plot linear

借助数学和图解法,找到等式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

1 个答案:

答案 0 :(得分:0)

您可以使用m快速获得cfminsearch。在下面的第一个示例中,误差函数是平方误差之和(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)