关于matlab画矢量图的问题
来源:百度知道 编辑:UC知道 时间:2024/06/10 20:03:45
先看看我写的程序:
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是纵向网格数。
现在的问题是由于网格太多,画出来的矢量图很密,根本看不清箭头。
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)