想在matlab中画一组图出来,程序已经编出来了,结果变量也可以求得,但图却画不出来……求matlab学霸指点

在matlab中想把交通要道节点与其对应的最近服务平台节点一一对应的画出,两两相连,一共有20组,程序已编出,结果变量都可以得到,但惟独画图画不出来,程序已经改了几遍了,... 在matlab中想把交通要道节点与其对应的最近服务平台节点一一对应的画出,两两相连,一共有20组,程序已编出,结果变量都可以得到,但惟独画图画不出来,程序已经改了几遍了,figure窗口还是一片空白!……心累,有没有大神可以指点一二?
程序如下:
clear;
clc;
x=[413;403;383.50;381;339;335;317;334.50;333;282;247;219;225;280;290;337;415;432;418;444];
y=[359;343;351;377.50;376;383;362;353.50;342;325;301;316;270;292;335;328;335;371;374;394];
%x、y为20个服务平台的横纵坐标
m=[219;280;337;251;234;225;212;250.50;243;246;331;325;335];
n=[316;292;328;277;271;265;290;306;328;337;335;372;395;];
%m、n为13个交通要道的横纵坐标
for i=1:13
t1=sqrt((m(i)-x(1))^2+(n(i)-y(1))^2);
t2=0;
for j=1:20
t=sqrt((m(i)-x(j))^2+(n(i)-y(j))^2);
if t<t1
t1=t;
t2=j; %记录离该交通要道最近的服务平台的横纵坐标。
end
a(i)=t1;
b(i)=t2;
end
end
a=a'
b=b'

%对所求的结果进行绘图。
len=length(a)+length(m);
c=zeros(1,len); %把每一个交通要道节点与其对应的最近服务平台的横坐标存放在同一矩阵中。
k=0;
for i=1:2:len-1
c(i)=a(i-k);
k=k+1;
end
k=1;
for j=2:2:len
c(j)=m(j-k);
k=k+1;
end
% c(1:2:len-1)=a;
% c(2:2:len)=m;
len=length(b)+length(n);
d=zeros(1,len); %把每一个交通要道节点与其对应的最近服务平台的纵坐标存放在同一矩阵中。
k=0;
for i=1:2:len-1
d(i)=b(i-k);
k=k+1;
end
k=1;
for j=2:2:len
d(j)=n(j-k);
k=k+1;
end
% d(1:2:len-1)=b;
% d(2:2:len)=n;
% figure(1)

for i=1:2:len
plot(c(i),c(i+1),'-g'); %把交通要道节点与其对应的最近服务平台的两者横坐标画出,并相连
hold on;
plot(d(i),d(i+1),'--y'); %把交通要道节点与其对应的最近服务平台的两者纵坐标画出,并相连
hold on;
end
c和d都是一个1行26列的矩阵,c矩阵存放的是每一个交通要道节点与其对应的最近服务平台节点的横坐标,当c(1)为第1个交通要道节点的横坐标时,c(2)就为距第1个交通要道节点最近的服务平台的横坐标……以此类推,共有13组这样的向量;举个例子,如:第1个交通要道节点的横坐标为56,与其对应的最近服务平台节点的横坐标为45,则当c(1)=56,c(2)=45。。同理,d矩阵存放的是每一个交通要道节点与其对应的最近服务平台节点的纵坐标,也是同样的排列方法。。
展开
 我来答
dukinkin
2015-08-23 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:899万
展开全部

你的代码有错误,而且好复杂,我改了一下

clear;

clc;

x=[413;403;383.50;381;339;335;317;334.50;333;282;247;219;225;280;290;337;415;432;418;444];   

y=[359;343;351;377.50;376;383;362;353.50;342;325;301;316;270;292;335;328;335;371;374;394];

%x、y为20个服务平台的横纵坐标

m=[219;280;337;251;234;225;212;250.50;243;246;331;325;335];   

n=[316;292;328;277;271;265;290;306;328;337;335;372;395;];    

%m、n为13个交通要道的横纵坐标


a=zeros(13,1);%a是13x1的数列,用于记录连接 

%a(1)中储存的是第一个节点要连接的平台的序号

for i=1:13

    t1=sqrt((m(i)-x(1))^2+(n(i)-y(1))^2);

    t2=1;

    for j=2:20

        t=sqrt((m(i)-x(j))^2+(n(i)-y(j))^2);

        if t<t1

            t1=t;

            t2=j;    %记录离该交通要道最近的服务平台的横纵坐标。

        end

     end

     a(i)=t2;

end



plot(m,n,'bo');

hold on;

plot(x,y,'r.');

for i=1:13

plot([m(i) x(a(i))],[n(i) y(a(i))],'-g');  %把交通要道节点与其对应的最近服务平台两者相连

end

hold off;

legend('交通要道','服务平台','连线','location','northwest');


结果

追问
谢谢!
jimtien
2015-08-22 · TA获得超过7653个赞
知道大有可为答主
回答量:2146
采纳率:88%
帮助的人:1097万
展开全部
没看懂c,d里面的数什么含义
更多追问追答
追问
c和d都是一个1行26列的矩阵,c矩阵存放的是每一个交通要道节点与其对应的最近服务平台节点的横坐标,当c(1)为第1个交通要道节点的横坐标时,c(2)就为距第1个交通要道节点最近的服务平台的横坐标……以此类推,共有13组这样的向量;举个例子,如:第1个交通要道节点的横坐标为56,与其对应的最近服务平台节点的横坐标为45,则当c(1)=56,c(2)=45。
追答
现在 c(1)=0,c(2)=219, d(1)=12,d(2)=316, 就是要在点(0,12)和点(219,316)之间连线吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式