matlab绘制海洋图

MATLAB用于绘制图形效果非常好,所以一般的实验绘图都是由MATLAB完成,对于三维图形MATLAB也能很好地展示。

下面以一块三维曲面为例,绘制海洋图。

首先需要将三维曲面加载进工作空间,我们使用loadoff()函数完成,导入之后存储为filename.mat:

function shape = loadoff(filename)


shape = [];


f = fopen(filename, 'rt');


n = '';
while isempty(n)
    fgetl(f);
    n = sscanf(fgetl(f), '%d %d %d');
end
    
nv = n(1);
nt = n(2);
data = fscanf(f, '%f');


if(length(data) == nv*3 + nt*3)
    numsInTri = 3;
else 
    if(length(data) == nv*3 + nt*4)
        numsInTri = 4;
    else
        error('file format not supported');
    end
end

shape.TRIV = reshape(data(end-numsInTri*nt+1:end), [4 nt])';
if(numsInTri ==4)
    shape.TRIV = shape.TRIV(:,2:4);
end
if(shape.TRIV(1) == 0)
    shape.TRIV = shape.TRIV + 1;
end




data = data(1:end-numsInTri*nt);


data = reshape(data, [length(data)/nv nv]);


shape.X = data(1,:)';
shape.Y = data(2,:)';
shape.Z = data(3,:)';


fclose(f);


接着,便是绘制海洋图,三维曲面以点为元素,所以要将将每个点的数值(比如热核签名的值,比如实验误差等)导入MATLAB中,存成data.mat文件以便下次加载,然后就是绘图啦,下面是代码:

load filename.mat
load data.mat


figure(1)

trisurf( filename{1}.TRIV, filename{1}.X, filename{1}.Y, filename{1}.Z, data(:,1)), axis image, lighting phong; %显示三维曲面,lighting phong;是光照
%shading interp, %隐藏网格线


colormap jet(2048)  %自定义色彩,有jet,spring,autumn等
colorbar,  %显示colorbar

caxis([0,1])% 定义colorbar范围大小

%colorbar('YTickLabel',{' '}) %隐藏colorbar刻度 


view([-102 -20]), %视角
title('海洋图')
axis off

### 使用Matlab绘制海洋流场 #### 创建数据集 为了展示如何在Matlab绘制海洋流场,可以先加载内置的数据集`wind`作为模拟的流体流动数据。此数据集包含了三维空间中的速度分量。 ```matlab load wind % 加载示例数据集 [sx sy sz] = meshgrid(min(x(:)), linspace(min(y(:)), max(y(:)), 20), min(z(:))); % 定义流线起始位置 ``` #### 绘制流线 利用`streamline`函数基于给定的速度场和起点来描绘流线,这些线条能够直观地表示水流的方向以及大致路径[^3]。 ```matlab figure; hs = streamline(x,y,z,u,v,w,sx,sy,sz); set(hs,'Color','red'); % 设置流线颜色为红色 view(2); axis tight; box on; grid on; xlabel('Longitude (°E)'); ylabel('Latitude (°N)'); title('Ocean Current Streamlines'); ``` 对于更复杂的场景,比如要在地理坐标系下显示带有地球表面特征的地背景,则可借助第三方工具包如M_Map来进行增强处理[^2]。 #### 添加矢量箭头 如果希望进一步强调局部区域内的具体流向强度与方向,可以在上述基础上叠加使用`quiverm`命令(来自M_Map库),它允许用户在地投影上添加二维向量箭头。 ```matlab hold on; % 假设已安装并初始化好 M_MAP 工具箱环境变量 m_proj('mercator', 'longlatlim', [min(x(:)) max(x(:)); min(y(:)) max(y(:))]); [xx yy uu vv] = m_grid([min(x(:)):max(x(:))], [min(y(:)):max(y(:))], u(:,:,1), v(:,:,1)); hq = quiverm(xx,yy,uu,vv); set(hq,'AutoScaleFactor',2,'MaxHeadSize',8e-3,'LineWidth',1.5); colormap jet; colorbar; caxis([-1 1]*mean(sqrt(uu.^2 + vv.^2),'all')); ``` 这样不仅可以看到整体趋势,还能观察到特定地点附近的精细结构变化情况。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值