如何在MATLAB中删除2D绘图的特定区域?

如何在MATLAB中删除2D绘图的特定区域?,matlab,plot,Matlab,Plot,我有一个下面的MATLAB图,它由一个矩形区域组成,上面有圆孔: 我正在模拟流经矩形多孔介质的流动。我已经绘制了描述这种流动的流线。但是,流线会穿过整个网格,这意味着它们也会穿过绘图上的圆孔。我想把这些孔的流线去掉 有什么建议吗 下面是我用来创建该绘图的代码: x = linspace(min(X_plot(:,1)), max(X_plot(:,1)), 100); y = linspace(min(X_plot(:,2)), max(X_plot(:,2)), 100); [xg, yg]

我有一个下面的MATLAB图,它由一个矩形区域组成,上面有圆孔:

我正在模拟流经矩形多孔介质的流动。我已经绘制了描述这种流动的流线。但是,流线会穿过整个网格,这意味着它们也会穿过绘图上的圆孔。我想把这些孔的流线去掉

有什么建议吗

下面是我用来创建该绘图的代码:

x = linspace(min(X_plot(:,1)), max(X_plot(:,1)), 100); 
y = linspace(min(X_plot(:,2)), max(X_plot(:,2)), 100);
[xg, yg] = meshgrid(x, y);
Fx = TriScatteredInterp(X_plot(:,1), X_plot(:,2), qx);
Fy = TriScatteredInterp(X_plot(:,1), X_plot(:,2), qy);
qxg = Fx(xg,yg);
qyg = Fy(xg,yg); 
figure(1); hold on; 
hl = streamslice(xg, yg, qxg, qyg);
set(hl, 'color', 'b','Linewidth',0.5);
要在我使用的图形上绘制圆和椭圆:

    hold on
    P2 = [2,-1.5];
    r2=.6;
    tt = linspace(0,pi*2);
    xx = P2(1) + r2*cos(tt);
    yy = P2(2) + r2*sin(tt);
    plot(xx,yy,'--','Color',[.7 .7 0]) 

    hold on
    P3 = [3,1.5];
    r3=1.3;
    tt = linspace(0,pi*2);
    xx = P3(1) + r3*cos(tt);
    yy = P3(2) + r3*sin(tt);
    plot(xx,yy,'--','Color',[1 .7 0]) 

    hold on
    P5 = [5,-1.5];
    r5=.8;
    tt = linspace(0,pi*2);
    xx = P5(1) + r5*cos(tt);
    yy = P5(2) + r5*sin(tt);
    plot(xx,yy,'--','Color',[1 .7 0]) 

    hold on
    P6 = [6,1.5];
    r6=.6;
    tt = linspace(0,pi*2);
    xx = P6(1) + r6*cos(tt);
    yy = P6(2) + r6*sin(tt);
    plot(xx,yy,'--','Color',[1 .7 0])


    hold on
    P4 = [9,0];
    r41=.5;
    r42=2.4;
    tt = linspace(0,pi*2);
    xx = P4(1) + r41*cos(tt);
    yy = P4(2) + r42*sin(tt);
    plot(xx,yy,'--','Color',[.9 .7 0]) 

您需要发布用于生成绘图的代码,以及看到的输出图片。然后描述您希望输出如何不同。您好,我在这里添加的代码,但要添加输出的图片,显然我需要一些我没有的声誉。我不知道如何才能让自己比这更清楚:x=linspaceminX_plot:,1,maxX_plot:,1100;y=linspaceminX_图:,2,maxX_图:,2100;[xg,yg]=meshgridx,y;Fx=三散射间期px_图:,1,X_图:,2,qx;Fy=三散射中子图:,1,X,u图:,2,qy;qxg=Fxxg,yg;qyg=Fyxg,yg;我在问题@Fletch中添加了代码,它看起来更好。很难回答这个问题,因为我们不知道您的数据是什么样子。你能发布几行生成样本数据的行吗,这样我们就知道你所说的孔是什么意思了?