【问题标题】:MATLAB: subplot of one loopMATLAB:一个循环的子图
【发布时间】:2016-11-05 03:26:59
【问题描述】:

我想绘制轨道速度与深度的关系。使用以下脚本可以成功:

clear all; clc; close all;

u = [ 
    0.1841    0.6168    0.6889    0.3531   -0.2019   -0.6549   -0.7366   -0.3882    0.1988;
    0.1627    0.5404    0.6010    0.3045   -0.1819   -0.5763   -0.6439   -0.3353    0.1799;
    0.1436    0.4732    0.5240    0.2623   -0.1639   -0.5071   -0.5628   -0.2895    0.1629;
    0.1266    0.4141    0.4566    0.2258   -0.1475   -0.4463   -0.4919   -0.2498    0.1475;
    0.1113    0.3622    0.3977    0.1941   -0.1328   -0.3927   -0.4299   -0.2154    0.1336;
    0.0977    0.3165    0.3461    0.1666   -0.1196   -0.3455   -0.3756   -0.1855    0.1211];

w = [
    0.3543    0.0801   -0.2553   -0.4510   -0.3879   -0.1006    0.2431    0.4419    0.3824;
    0.3055    0.0660   -0.2262   -0.3956   -0.3391   -0.0874    0.2129    0.3866    0.3351;
    0.2630    0.0538   -0.2005   -0.3472   -0.2966   -0.0760    0.1866    0.3385    0.2939;
    0.2262    0.0434   -0.1780   -0.3050   -0.2596   -0.0661    0.1635    0.2965    0.2579;
    0.1942    0.0345   -0.1583   -0.2680   -0.2273   -0.0576    0.1434    0.2598    0.2264;
    0.1666    0.0269   -0.1409   -0.2358   -0.1992   -0.0502    0.1258    0.2278    0.1990];


xx = 0; yy = 0;
scale = 0; p = 1;
dz = 2;
figure(1)
for d = 1:6;
%d
   dz = dz - 2;
   for i =1:9;
     quiver(xx, yy+dz, p*u(d,i),p*w(d,i),scale)
     hold on
   end
end    
grid on    
axis equal;     
axis([-1 1 -10.5 0.5])     
%subplot(1,2,1)    
%axis([-1 1 -4.5 0.5])     
%subplot(1,2,2)    
%axis([-1 1 -10.5 -5.5]) 

我的问题:如何将此情节分成两个子情节?

subplot(1,2,1)    
axis([-1 1 -4.5 0.5])     
subplot(1,2,2)    
axis([-1 1 -10.5 -5.5]) 

【问题讨论】:

    标签: matlab loops matlab-figure subplot


    【解决方案1】:

    您可以简单地通过在一个子图中绘制一半的值和在另一个子图中绘制另一半值来做到这一点。由于您的区间是d=1:6,您可以使用if 条件在一个子图中绘制d=1:3 的值,并在第二个子图中绘制d=4:6 的值。即

     if d<=3 subplot(1,2,1); axis([-1 1 -4.5 0.5]); grid on;  end 
     if d>3 subplot(1,2,2); axis([-1 1 -10.5 -5.5]); grid on; end
    

    因此,总体而言,您的代码将是:

    clear all; clc; close all;
    
    u = [ 
        0.1841    0.6168    0.6889    0.3531   -0.2019   -0.6549   -0.7366   -0.3882    0.1988;
        0.1627    0.5404    0.6010    0.3045   -0.1819   -0.5763   -0.6439   -0.3353    0.1799;
        0.1436    0.4732    0.5240    0.2623   -0.1639   -0.5071   -0.5628   -0.2895    0.1629;
        0.1266    0.4141    0.4566    0.2258   -0.1475   -0.4463   -0.4919   -0.2498    0.1475;
        0.1113    0.3622    0.3977    0.1941   -0.1328   -0.3927   -0.4299   -0.2154    0.1336;
        0.0977    0.3165    0.3461    0.1666   -0.1196   -0.3455   -0.3756   -0.1855    0.1211];
    
    w = [
        0.3543    0.0801   -0.2553   -0.4510   -0.3879   -0.1006    0.2431    0.4419    0.3824;
        0.3055    0.0660   -0.2262   -0.3956   -0.3391   -0.0874    0.2129    0.3866    0.3351;
        0.2630    0.0538   -0.2005   -0.3472   -0.2966   -0.0760    0.1866    0.3385    0.2939;
        0.2262    0.0434   -0.1780   -0.3050   -0.2596   -0.0661    0.1635    0.2965    0.2579;
        0.1942    0.0345   -0.1583   -0.2680   -0.2273   -0.0576    0.1434    0.2598    0.2264;
        0.1666    0.0269   -0.1409   -0.2358   -0.1992   -0.0502    0.1258    0.2278    0.1990];
    
    
    xx = 0; yy = 0;
    scale = 0; p = 1;
    dz = 2;
    figure(1)
    
    for d = 1:6;
       dz = dz - 2;
       for i =1:9;
         if d<=3 subplot(1,2,1); axis([-1 1 -4.5 0.5]); grid on;  end 
         if d>3 subplot(1,2,2); axis([-1 1 -10.5 -5.5]); grid on; end
         quiver(xx, yy+dz, p*u(d,i),p*w(d,i),scale)
         hold on; 
       end
    end    
    

    【讨论】:

    • Sardar_Usama,它解决了!非常感谢你的帮助。最好的尊重
    • 但是,对于 d = 1:12,我们如何将子图分成四个子图?
    • @User1961 上面的代码在一个子图中绘制了一半的值(对于d=1:3),在另一个子图中绘制了另一半的值(对于d=4:6)。现在对于d=1:12,您可以简单地将其分为区间d=1:6d=7:12
    • 感谢 Sardar_Usama。这意味着,我们不能在一个循环中使用。因此,对于 4 个分支,我们应该使用 2 个循环,循环 (d=1:6) 和循环(d=7:12)。
    • 你可以使用一个循环条件,这是改变我的意思:if d&lt;=6 subplot(1,2,1); axis([-1 1 -4.5 0.5]); grid on; end if d&gt;6 subplot(1,2,2); axis([-1 1 -10.5 -5.5]); grid on; end。 ‍‍‍‍您可能还需要修改坐标区的限制
    猜你喜欢
    • 2015-10-10
    • 2015-07-24
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多