Minimizing an equation to 0

2 次查看(过去 30 天)
AAS
AAS 2022-9-11
I have an equation where I am trying to reduce the RMS to 0 i.e RMS(A-(B+C)<=0. A,B and C are known but the RMS is not equal to 0 . Now, I want to modify this equation such that RMS(A-(k1*B+k2*C)<=0. I want to find k1 and k2 to make the RMS as close to 0. How could I do this?
  2 个评论
Walter Roberson
Walter Roberson 2022-9-11
are A, B, C matrices? Are k1 and k2 scalar?
AAS
AAS 2022-9-11
yes, A,B and C are matrices and k1 and k2 are scalars.

请先登录,再进行评论。

回答(3 个)

Alan Stevens
Alan Stevens 2022-9-11
Try fminsearch
  1 个评论
AAS
AAS 2022-9-11
I tried to implement it this way.. however, it did not produce good resuts, barely did any minimization. Am I implementing it right?
f = @(k) rms(C-(k(1)*A+k(2)*B));;
k0=[1 1];
[xmin] = fminsearch(f,k0,options);
f(xmin);

请先登录,再进行评论。


Torsten
Torsten 2022-9-11
编辑:Torsten 2022-9-11
A = [4 3; 6 2; 7 -3];
B = [1 -3; 2 2; 5 -pi];
C = [12 -0.5; 7 -3; 0 1];
fun = @(p)reshape(A-(p(1)*B+p(2)*C),[],1);
sol = lsqnonlin(fun,[1 1])
Local minimum found. Optimization completed because the size of the gradient is less than the value of the optimality tolerance.
sol = 1×2
0.9421 0.3061
error = rms(fun(sol))
error = 2.7826

Bruno Luong
Bruno Luong 2022-9-11
编辑:Bruno Luong 2022-9-11
This minimize the frobenius norm, or l2 norm of the vectorized residual matrix (divided by sqrt(numel(A)) you'll get the rms)
k=[B(:),C(:)]\A(:);
k1=k(1);
k2=k(2);

类别

Help CenterFile Exchange 中查找有关 Multirate Signal Processing 的更多信息

产品


版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by