首页 > 解决方案 > 如何在 MATLAB 中找到最小二乘成本函数的矩阵值?

问题描述

给定 S1 的值,它是一个大小为 (1,K) 的向量,我想找到大小为 (N,M) 的矩阵 B 的值,它可以最小化以下最小二乘成本函数:

sum(S2 - S1).^2

受制于:

S2(i)>=S1(i) \forall i \in {1, .., K}

其中 S2 是大小为 (1,K) 的向量,是矩阵 B 的函数。可以使用以下系统参数和方程在优化矩阵 B 后计算 S2:

clc;
clear;

% Given system parameters:
N = 2;
K = 4;
M = 2;
C_l = 4;
H = [0.1185    0.2811; 0.3550    0.8224; 0.3260    0.9644; 0.5333    0.6083]; % 4*2 matrix
A = [-2 1; -1 1]; % 2*2 matrix
C = [7 -3; 7 -3; -2 1; -2 1]; % 4*2 matrix
P = [25000000   0; 0  25000000]; % 4*4 matrix
S1 = [3.1683    3.1686    1.8716    1.8898]; % 1*4 vector
S2 = zeros(1,K); % intial value
B = zeros(N,M); % intial value

% How can we optimize the value of the B matrix to achieve our goal? 

%calculate S2 from B and the other given inputs
for j=1:1:N
    d(j) = (B(j,:)*P*B(j,:)')/((2^(2*C_l))-(norm(A(:,j))^2));
end
D_d = diag(d);

for i=1:1:K   
    V_d(i)=C(i,:)*P*B'*H(i,:)'*inv(1+H(i,:)*(A'*D_d*A+B*P*B')*H(i,:)');
    sigma_d(i)=norm((V_d(i)*H(i,:)*B-C(i,:))*(P^(1/2)))^2+(V_d(i)^2)*(1+H(i,:)*A'*D_d*A*H(i,:)');
    
    S2(i)=0.5*log2((P(1,1))/sigma_d(:,i));   
end

标签: matlabmatrixoptimizationvectorminimization

解决方案


推荐阅读