如何用Matlab画出z=tanx/(tanx-tany)的向量场?

我尝试了如下代码:[X,Y]=meshgrid(-80:2:80,-80:2:80);Z=tand(X)./(tand(X)-tan(Y));[DX,DY]=gradie... 我尝试了如下代码:
[X,Y] = meshgrid(-80:2:80,-80:2:80);
Z =tand(X)./(tand(X)-tan(Y));
[DX,DY] = gradient(Z,2,2); %梯度
% contour(X,Y,Z) %等高线
hold on
quiver(X,Y,DX,DY) %向量场
xlabel('x');
ylabel('y');
colormap hsv
hold off
但结果不对,正确的结果应该如图,求帮忙。
展开
 我来答
George_Gate
推荐于2016-04-09 · TA获得超过445个赞
知道小有建树答主
回答量:127
采纳率:0%
帮助的人:182万
展开全部
主要问题是某些点的梯度是发散的,结果算出来DX,DY里面有一堆Inf。画图的时候,Inf的箭头很长,所以把其它地方的箭头都变成一个点了。解决方法是把Inf都替换成NaN,代码如下(缩进的地方是修改过的代码):

[X,Y] = meshgrid(-80:2:80,-80:2:80);
Z =tand(X)./(tand(X)-tand(Y));
[DX,DY] = gradient(Z,2,2); %梯度
  DX(abs(DX)==Inf)=NaN;
  DY(abs(DY)==Inf)=NaN;
% contour(X,Y,Z) %等高线
hold on
  quiver(X,Y,DX,DY,10) %向量场
xlabel('x');
ylabel('y');
colormap hsv
hold off
东莞大凡
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进... 点击进入详情页
本回答由东莞大凡提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式