首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Matlab网格中NAN区域的替换

Matlab网格中NAN区域的替换
EN

Stack Overflow用户
提问于 2017-07-14 17:09:07
回答 1查看 52关注 0票数 1

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

代码语言:javascript
运行
复制
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),我想在下面显示向量场(它不是无限的):

代码语言:javascript
运行
复制
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));
EN

回答 1

Stack Overflow用户

发布于 2017-07-14 17:52:08

您可以创建索引,以便仅替换非限定值:

代码语言:javascript
运行
复制
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对非限定值进行插值

代码语言:javascript
运行
复制
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);

之前的

之后的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45099017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档