【问题标题】:substituting NAN region in meshgride in Matlab在 Matlab 中的网格网格中替换 NAN 区域
【发布时间】:2017-07-14 09:09:06
【问题描述】:

我写了下面的代码来显示一个向量场:

clear all;
close all;
phi = 90;
[x,y] = meshgrid(-3:0.1:3,-3:0.1:3);
u = (x.*(-1+3.*(x.*cosd(phi)+y.*sind(phi)).^2./(x.^2+y.^2))./(x.^2+y.^2).^(3/2))+...
    ((x-2).*(-1+3.*((x-2).*cosd(phi)+y.*sind(phi)).^2./((x-2).^2+y.^2))./((x-2).^2+y.^2).^(3/2))+...
    ((x+2).*(-1+3.*((x+2).*cosd(phi)+y.*sind(phi)).^2./((x+2).^2+y.^2))./((x+2).^2+y.^2).^(3/2));
v = (y.*(-1+3.*(x.*cosd(phi)+y.*sind(phi)).^2./(x.^2+y.^2))./(x.^2+y.^2).^(3/2))+...
    (y.*(-1+3.*((x-2).*cosd(phi)+y.*sind(phi)).^2./((x-2).^2+y.^2))./((x-2).^2+y.^2).^(3/2))+...
    (y.*(-1+3.*((x+2).*cosd(phi)+y.*sind(phi)).^2./((x+2).^2+y.^2))./((x+2).^2+y.^2).^(3/2));
h = streamslice(x,y,u,v,0.5);

问题是,空间中有三个点uv 变为无限:(y=0,x=0)(y=0,x=-2)(y=0,x=2)。当vu 变为无限时,该区域中没有向量场,输出为空区域。我希望 MATLAB 省略 vu 的无限部分,并绘制 vu 的其他部分。例如在(y=0,x=0),我想在下面显示向量场(不是无限的):

u = ((x-2).*(-1+3.*((x-2).*cosd(phi)+y.*sind(phi)).^2./((x-2).^2+y.^2))./((x-2).^2+y.^2).^(3/2))+...
    ((x+2).*(-1+3.*((x+2).*cosd(phi)+y.*sind(phi)).^2./((x+2).^2+y.^2))./((x+2).^2+y.^2).^(3/2));
v = (y.*(-1+3.*((x-2).*cosd(phi)+y.*sind(phi)).^2./((x-2).^2+y.^2))./((x-2).^2+y.^2).^(3/2))+...
    (y.*(-1+3.*((x+2).*cosd(phi)+y.*sind(phi)).^2./((x+2).^2+y.^2))./((x+2).^2+y.^2).^(3/2));

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

    您可以创建一个索引以仅替换非有限值:

    u = [1 1 inf NaN 1 1];
    v = [1 1 inf NaN 1 1];
    
    u1 = [2 2 2 2 2 2];
    v1 = [2 2 2 2 2 2];
    
    %Now, if an element of u or v is not finite it is replaced by the same value of the matrices u1,v1.
    
    u(~isfinite(u))=u1(~isfinite(u));
    v(~isfinite(v))=v1(~isfinite(v));
    

    第二个选项:

    您还可以使用griddata 插入非有限值:

    finite     = isfinite(u) & isfinite(v);
    u = griddata(x(finite), y(finite), u(finite), x, y);
    v = griddata(x(finite), y(finite), v(finite), x, y);
    

    之前:

    之后:

    【讨论】:

      猜你喜欢
      • 2018-01-26
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 2014-01-23
      相关资源
      最近更新 更多