如何在图上将矩阵的行绘制为点?

时间:2019-01-24 23:44:36

标签: matlab

我正在尝试绘制桁架桥,并用桥的线来显示哪些力以不同的颜色显示压缩和拉力。桥的线通过节点连接。我根据力的大小除以1000得出线宽。

A = [-0.5 1 0 0 0 0 0 0 0 0.5 0 0 0 0 0; 
-sqrt(3)/2 0 0 0 0 0 0 0 0 -sqrt(3)/2 0 0 0 0 0;
0 -1 1 0 0 0 0 0 0 0 -0.5 0.5 0 0 0; 
0 0 0 0 0 0 0 0 0 0 -sqrt(3)/2 -sqrt(3)/2 0 0 0;
0 0 -1 1 0 0 0 0 0 0 0 0 -0.5 0.5 0; 
0 0 0 0 0 0 0 0 0 0 0 0 -sqrt(3)/2 -sqrt(3)/2 0; 
0 0 0 -1 0.5 0 0 0 0 0 0 0 0 0 -0.5; 
0 0 0 0 -sqrt(3)/2 0 0 0 0 0 0 0 0 0 -sqrt(3)/2; 
0 0 0 0 -0.5 -1 0 0 0 0 0 0 0 0 -0.5; 
0 0 0 0 0 1 -1 0 0 0 0 0 0 -0.5 0.5; 
0 0 0 0 0 0 0 0 0 0 0 0 0 sqrt(3)/2 sqrt(3)/2; 
0 0 0 0 0 0 1 -1 0 0 0 -0.5 0.5 0 0; 
0 0 0 0 0 0 0 0 0 0 0 sqrt(3)/2 sqrt(3)/2 0 0; 
0 0 0 0 0 0 0 1 -1 -0.5 0.5 0 0 0 0; 
0 0 0 0 0 0 0 0 0 sqrt(3)/2 sqrt(3)/2 0 0 0 0];

w7 = 800;
w8 = 900;
w9 = 13000;
W = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; w7; 0; w8; 0; w9];
x = A\W;

nodes = [0 0; 
         0.5 sqrt(3)/2; 
         1.5 sqrt(3)/2; 
         2.5 sqrt(3)/2; 
         3.5 sqrt(3)/2; 
         4 0; 
         3 0; 
         2 0; 
         1 0];
beams = [1 2; 
         2 3; 
         3 4; 
         4 5; 
         5 6; 
         6 7; 
         7 8; 
         8 9; 
         1 9; 
         2 9; 
         3 9; 
         3 8; 
         4 8; 
         4 7; 
         5 7];

clf; % clear the figure window
set(gcf,'position',[20 50 600 250],'paperpositionmode','auto')
hold on
% Code to plot goes here!
axis equal; % make aspect ratio 1:1
axis([-.5 4.5 -.5 1.5]);
for jj = 1:15
    if x(jj,1) > 0
        plot(nodes(beams(jj,1:2),1),nodes(beams(jj,1:2),2),'-g','LineWidth',abs(x(jj,1))/1000);
    else
        plot(nodes(beams(jj,1:2),1),nodes(beams(jj,1:2),2),'-r','LineWidth',abs(x(jj,1))/1000);
    end
end
plot(nodes(1:9,1:2),'.k','MarkerSize',80);
print(gcf,'-dpng','truss_bridge_beams.png');

我已经按照想要的方式绘制了线条,但是我想在节点矩阵中指定的行向量处以点的形式绘制节点。但是,当我尝试这样做时,点分散在整个图形上。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

这是因为plot(Y)相对于行索引而不是彼此相对绘制Y列。

plot(nodes(1:9,1), nodes(1:9,2))

应该解决问题。