How to find the variable that minimize the root mean squared error between a known vetor and the multiplication of this variable and an another known vector?

7 views (last 30 days)
Supposing that I have a variable , and two known vectors , where N is a known number. I want to find the a that minimizes the root mean squared error between and . Is there any neat apprach to implement it?

Accepted Answer

Amal Raj
Amal Raj on 9 Feb 2023
Hi 奥 刘,
You can use linear regression to find a.
Please refer this example below:
N = 100; % Example value for N
x = linspace(0, 10, N)'; % Known vector x
y = sin(x) + 0.1 * randn(N, 1); % Known vector y
X = [ones(N, 1) x]; % Design matrix
a = X \ y; % Solve for a using least squares
y_pred = X * a; % Calculate predicted values of y
rmse = sqrt(mean((y - y_pred) .^ 2)); % Calculate RMSE
  3 Comments
Torsten
Torsten on 9 Feb 2023
Edited: Torsten on 9 Feb 2023
You mustn't include the constant term in the calculation of the regression coefficients because you are to regress
y = a*x
not
y = a*x + b
The results for "a" will differ for the two cases.
奥 刘
奥 刘 on 10 Feb 2023
@Torsten Yes, that's right. I think @Amal Raj just gave me an example but didn't mean that I should include the constant. Anyway, thanks for reminding me!

Sign in to comment.

More Answers (1)

Torsten
Torsten on 9 Feb 2023
a = (c.'*b)/(b.'*b)
where b and c are your column vectors.

Categories

Find more on Fit Postprocessing in Help Center and File Exchange

Tags

Products


Release

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!