楼主: far168
15398 7

[问答] 运行错误Matrix dimensions must agree [推广有奖]

  • 0关注
  • 1粉丝

博士生

6%

还不是VIP/贵宾

-

威望
0
论坛币
6 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
431 点
帖子
75
精华
0
在线时间
265 小时
注册时间
2005-10-16
最后登录
2020-3-15

10论坛币
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);
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
E
Mean(E)
[Y I]=sort(mean(E));
fliplr(I)



matlab运行上述程序时,出现如下错误,如何解决呢?不知道如何更正
??? Error using ==> minus
Matrix dimensions must agree.

最佳答案

myzrl20 查看完整内容

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)']; 同理。 所以楼主需要将减号去掉。 那么这个线性规划程序 ...
关键词:Dimensions dimension matrix agree 运行错误 Matrix matlab Error 程序 如何

本帖被以下文库推荐

沙发
myzrl20 发表于 2014-10-21 21:37:22 |只看作者 |坛友微信交流群
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

已有 1 人评分论坛币 收起 理由
admin_kefu + 100 热心帮助其他会员

总评分: 论坛币 + 100   查看全部评分

使用道具

藤椅
Xaero 发表于 2014-10-21 22:16:49 |只看作者 |坛友微信交流群
保存为m文件,运行,找到出错的那一行。
提示说明,某个减号左右两个变量矩阵的size不相同。

使用道具

板凳
nuanuan727 发表于 2015-2-4 17:42:13 |只看作者 |坛友微信交流群
楼主 你好,请问你的问题解决了吗?我也遇到同样的问题,求帮助啊

使用道具

报纸
nuanuan727 发表于 2015-2-5 19:05:22 |只看作者 |坛友微信交流群
myzrl20 发表于 2015-2-4 18:53
matlab运行上述程序时,出现如下错误,如何解决呢?不知道如何更正
??? Error using ==> minus
Matrix di ...
请教一下,你用的是哪版Matlab,我copy了你的代码过去但是提示还是Error,我还是Matlab菜鸟,能不能请你帮我处理个数据?感激不尽!

使用道具

地板
myzrl20 发表于 2015-2-6 00:02:26 |只看作者 |坛友微信交流群
nuanuan727 发表于 2015-2-5 19:05
请教一下,你用的是哪版Matlab,我copy了你的代码过去但是提示还是Error,我还是Matlab菜鸟,能不能请你帮 ...
matlab 2014a

帮处理数据就算了。
帮看看具体错误和调试程序还可以。
你把那段代码保存的m文件发给我,这样更明白。

另,如果实在对matlab处理规划问题不够熟悉。
可以用用lindo或lingo软件,那是专门处理数学建模的,可以处理线性、非线性规划问题。

使用道具

7
myzrl20 发表于 2015-2-6 00:02:36 |只看作者 |坛友微信交流群
nuanuan727 发表于 2015-2-5 19:05
请教一下,你用的是哪版Matlab,我copy了你的代码过去但是提示还是Error,我还是Matlab菜鸟,能不能请你帮 ...
matlab 2014a

帮处理数据就算了。
帮看看具体错误和调试程序还可以。
你可以把那段代码保存的m文件发到我邮箱1211584009@qq.com

另,如果实在对matlab处理规划问题不够熟悉。
可以用用lindo或lingo软件,那是专门用于数学建模的,可以处理线性、非线性规划问题。

使用道具

8
matlab-007 发表于 2016-1-26 11:00:20 |只看作者 |坛友微信交流群

Matrix dimensions must agree错误的中文解释是:矩阵的维数必须一致 出错原因:这是由于运算符(= + - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。matlab 通过“.”来区分矩阵运算和元素运算。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-12 06:20