Matlab 线性规划

本文详细介绍了如何在Matlab中通过`linprog`函数解决线性规划问题,包括数据预处理、构造AUG矩阵、求解线性优化问题,并对结果进行平滑处理。
摘要由CSDN通过智能技术生成

function phi_res = linear_program(phi,m)
% 线性规划
% phi:数据
% m:阶数

% A_AUG
n = length(phi);
I_n = eye(n);
Z = zeros(n-m+1,n);
M = zeros(n-m+1,n);
for i = 1:size(M,1)
    M(i,i:i+m-1) = CSG(m);
end
A_AUG = [I_n,-I_n;I_n,I_n;Z,M];
% phi_AUG
phi_AUG = [-phi,phi,zeros(1,n-m+1)]';

C = [ones(1,n),zeros(1,n)];
phi_c=linprog(C,-A_AUG,-phi_AUG);

phi_res = phi_c(n+1:end);

k = (m-1)/2;
sm = smth(k)';
for i = 1+k:size(phi_res,1)-k
    phi_res(i) = sum(phi_res(i-k:i+k) .*sm);
end
end
%%
function res = CSG(m)
res = [];
for i = 1:m
    res = [res,6*(2*i-m-1)/(m*(m+1)*(m-1))]; %#ok<*AGROW> 
end
end

function sm = smth(k)
tmp = 0;
for i = 1:k
    tmp = tmp + i*i;
end
tmp = tmp * 2;
dm = -k/tmp : 1/tmp : k/tmp;

for i = 1:k+1
    sm(i) = -sum(dm(1:i-1)) - dm(i)/2;
end
for i = k+2:2*k+1
    sm(i) = sum(dm(i+1:2*k+1)) + dm(i)/2;
end
end
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W | Z | H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值