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 Ansichten (letzte 30 Tage)
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?

Akzeptierte Antwort

Amal Raj
Amal Raj am 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 Kommentare
Torsten
Torsten am 9 Feb. 2023
Bearbeitet: Torsten am 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.
奥 刘
奥 刘 am 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!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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

Kategorien

Mehr zu Fit Postprocessing finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by