MATLAB plot向量长度必须相同。

k=0
while k<0.5
c=[0,0,0,0,0,1];
A=[-0.05,-0.27,-0.19,-0.185,-0.185,0;
0,0.025 ,0,0 0,-1;
0,0,0.015,0,0,-1;
0,0,0,0.055.0,-1;
0,0,0,0,0.026,-1];
b=[-k,0,0,0,0];
aeq=[1,1.01,1.02,1.045,1.065,0];
beq=[1];
vlb=[0;0;0;0;0;0];
vub=[ ];
[x,val]=linprog(c,A,b,aeq,beq,vlb,vub);
q=val;

plot(k,q,'.');
axis([0 0.1 0 0.5]);
hold on
k=k+0.001;

end
xlabel('k'),ylabel('q')

img

img

刚开始学matlab,现在学到线性规划这里,我想问下各位,我上面的这个代码一运行他就说我plot向量长度必须相同,我到底错在哪儿了,应该怎么改呢,谢谢各位了

这个是楼主的代码:

k=0
while k<0.5
    c=[0,0,0,0,0,1];
    A=[
        -0.05,-0.27,-0.19,-0.185,-0.185,0;
        0,0.025 ,0,0 0,-1;
        0,0,0.015,0,0,-1;
        0,0,0,0.055,0,-1;
        0,0,0,0,0.026,-1
        ];
    b=[-k,0,0,0,0];
    aeq=[1,1.01,1.02,1.045,1.065,0];
    beq=[1];
    vlb=[0;0;0;0;0;0];
    vub=[ ];
    [x,val]=linprog(c,A,b,aeq,beq,vlb,vub);
    q=val;
    plot(k,q,'.');
    axis([0 0.1 0 0.5]);
    hold on
    k=k+0.001;
end
xlabel('k'),ylabel('q')

运行的结果是这样:

img

这里面plot(k,q,'.');中,k和q只是一个值

这里面补了一个X和Y用来存储k和p的值,运行结果如下,楼主看看是不是你想要的结果。

img

k=0
X = [];
Y = [];
while k<0.5
    c=[0,0,0,0,0,1];
    A=[
        -0.05,-0.27,-0.19,-0.185,-0.185,0;
        0,0.025 ,0,0 0,-1;
        0,0,0.015,0,0,-1;
        0,0,0,0.055,0,-1;
        0,0,0,0,0.026,-1
        ];
    b=[-k,0,0,0,0];
    aeq=[1,1.01,1.02,1.045,1.065,0];
    beq=[1];
    vlb=[0;0;0;0;0;0];
    vub=[ ];
    [x,val]=linprog(c,A,b,aeq,beq,vlb,vub);
    q=val;
    plot(k,q,'.');
    X = [X, k];
    Y = [Y, q];
    axis([0 0.1 0 0.5]);
    hold on
    k=k+0.001;
end
xlabel('k'),ylabel('q')
figure(2);
plot(X, Y, '.');
xlabel('k'),ylabel('q')

你这程序求出来的q为空,k有值,肯定画不出来啊

img


你在仔细的看看linprog的用法,其中Aeq,beq写的不对