matlab must agree,运行错误Matrix dimensions must agree

该篇博客讲述了在使用Matlab进行线性规划时遇到的矩阵维度不匹配错误,通过分析代码并提出解决方案,即移除减号操作以确保矩阵运算的正确性。作者详细展示了错误原因和修复步骤,最后给出了优化后的运行结果和相关变量的输出。
摘要由CSDN通过智能技术生成

matlab运行上述程序时,出现如下错误,如何解决呢?不知道如何更正

??? Error using ==> minus

Matrix dimensions must agree.

矩阵的维度在数学运算符减号的两边不区配:zeros(1,m)的维度为1x3, Y(:,i)'的维度为1x2

f=[zeros(1,m)-Y(:,i)']; 如果是减号运算,[]是不需要,如果需要[],意味着矩阵的组合;

Aeq=[X(:,k)' zeros(1,s)

Eii*X(:,i)'-Y(:,i)']; 同理。

所以楼主需要将减号去掉。

那么这个线性规划程序就能跑起来。

-------------------------------------------------------------------------

clear

X=[30  60  55  40  70

25  40  70  30  90

130 150 120 70  180

];

Y=[35 43 76 52 63

60 80 53 42 71

];

n=size(X',1);m=size(X,1);s=size(Y,1);E=zeros(n,n);w=zeros(n,n);

A=[-X' Y']; b=zeros(n,1);

LB=zeros(m+s,1);UB=[];

for i=1:n

Aeq=[X(:,i)' zeros(1,s)]; beq=1;

f=[zeros(1,m) Y(:,i)'];

w(:,i)=linprog(f,A,b,Aeq,beq,LB,UB);

Eii=Y(:,i)'*w(m+1:m+s,i);

for k=1:n

f=[zeros(1,m) Y(:,k)'];

Aeq=[X(:,k)' zeros(1,s)

Eii*X(:,i)' Y(:,i)'];

beq=[1

0];

v=linprog(f,A,b,Aeq,beq,LB,UB);

E(i,k)=(Y(:,k)'*v(m+1:m+s))/(X(:,k)'*v(1:m));

end

end

mean(E)

[Y,I]=sort(mean(E));

fliplr(I)

%

-------------------------------------------------------------------------

运行结果如下:

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

Optimization terminated.

>> E

E =

1.0e-09 *

0.1030    0.0695    0.0817    0.0001    0.0000

0.1532    0.0049    0.0554    0.0000    0.1323

0.1575    0.0024    0.0009    0.1030    0.0029

0.0000    0.0234    0.0814    0.0347    0.0000

0.2348    0.0527    0.0236    0.0010    0.0000

>> w

w =

0.0006    0.0070    0.0022    0.0001    0.0058

0.0291    0.0141    0.0018    0.0052    0.0014

0.0020    0.0001    0.0062    0.0120    0.0026

0.0000    0.0000    0.0000    0.0000    0.0000

0.0000    0.0000    0.0000    0.0000    0.0000

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值