关于matlab画矢量图的问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 02:35:33
先看看我写的程序:

load('data.mat')
M=326;
N=197;
y=data(:,1);
dir=data(:,2);
for n=1:1:N+1;
for m=1:1:M+1;
H(n,m)=y((M+1)*(n-1)+m);
if H(n,m)==-9
H(n,m)=0;
end
DEGREE(n,m)=dir((M+1)*(n-1)+m);
HX(n,m)=H(n,m)*cos(pi*(DEGREE(n,m))/180);
HY(n,m)=H(n,m)*sin(pi*(DEGREE(n,m))/180);
end
end

xmax =114.823;
xmin = 114.497;

ymax = 22.839399615301;
ymin = 22.642323829592;
%
width=xmin:(xmax-xmin)/M:xmax;
depth=ymin:(ymax-ymin)/N:ymax;

[xx,yy]=meshgrid(width,depth);
quiver(xx,yy,HX,HY) ;
axis([xmin xmax ymin ymax ])
xlabel('经度')
ylabel('纬度')
title('波向图')

其中data.mat是在原始数据基础上计算后所得64746*5的矩阵,第一列是大小,第二列是方向度数值。

M=326是对目标区域划分的横向网格数,N是纵向网格数。

现在的问题是由于网格太多,画出来的矢量图很密,根本看不清箭头。

你可以将你的精细的数据插值到比较粗的网格上面,再作图.

[xx,yy]=meshgrid(width,depth);
quiver(xx,yy,HX,HY) ;
改成:
[xx,yy]=meshgrid(width,depth);

[xx1,yy1]=meshgrid(xmin:(xmax-xmin)/M*5:xmax,depth=ymin:(ymax-ymin)/N*5:ymax;); %粗网格,这里步长被我乘5了,你自己调

HX1=griddata(xx,yy,HX,xx1,yy1);%插值
HY1=griddata(xx,yy,HY,xx1,yy1);%插值

quiver(xx1,yy1,HX1,HY1) ;

[XI,YI,ZI] = GRIDDATA(X,Y,Z,XI,YI)