请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
12
返回列表 发新帖
楼主: 小蛇

matlab写涡度方程各项的代码问题

[复制链接]

新浪微博达人勋

 楼主| 发表于 2023-3-27 21:53:26 | 显示全部楼层
本帖最后由 小蛇 于 2023-3-27 21:55 编辑
Sigmas 发表于 2023-3-27 12:36
改一下计算顺序试试呢?
另外以我浅薄的理解也许可以稍微回答一下你对于下面老哥“如何不用for循环” ...

dvo_dx = double(diff(vo(x, :, z0, t0)', 1, 1))  / (double(dx)* 6371000 * cos(fi));  % x方向上的vo梯度
是一个721X1的数组,
dvo_dy = double(diff(vo(:, y, z0, t0)', 1, 2))  / (double(dy)* 6371000);  % y方向上的vo梯度
是一个1x1440的数组
V1 = -double(u(x, y, z0, t0)) .* dvo_dx - double(v(x, y, z0, t0)) .* dvo_dy;
是一个721x1440的数组,而不是x,y上的值了,这要把数组怎么改成每个点上的呢?
无法执行赋值 V1_all(x, y) = V1;  % 将计算结果存储到数组中,
因为左侧的大小为 1×1,右侧的大小为 721×1440。
      
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2023-3-27 22:39:00 | 显示全部楼层
小蛇 发表于 2023-3-27 21:53
dvo_dx = double(diff(vo(x, :, z0, t0)', 1, 1))  / (double(dx)* 6371000 * cos(fi));  % x方向上的vo ...

哦,大意了,没注意到这个点 0o0
  1. % 计算dvo_dx和dvo_dy
  2.         dx = (lon(2) - lon(1)) * pi / 180;  % 计算经度间隔
  3.         dy = (lat(2) - lat(1)) * pi / 180;  % 计算纬度间隔
  4.         dvo_dx = double(diff(vo(x, :, z0, t0), 1, 2)) ./ double(dx) * 6371000 * cos(fi);  % x方向上的vo梯度
  5.         dvo_dy = double(diff(vo(:, y, z0, t0), 1, 1)) ./ double(dy) * 6371000;  % y方向上的vo梯度
  6.         
  7.         % 补充缺失的最后一个元素
  8.         dvo_dx = [dvo_dx, dvo_dx(end)];
  9.         dvo_dy = [dvo_dy; dvo_dy(end)];
  10.         
  11.         % 提取x,y处的梯度
  12.         dvo_dx_val = dvo_dx(y);
  13.         dvo_dy_val = dvo_dy(x);

  14.         % 计算V1
  15.         V1 = -double(u(x, y, z0, t0)) .* dvo_dx_val - double(v(x, y, z0, t0)) .* dvo_dy_val;
  16.         
  17.         % 计算V4
  18.         V4 = double(v(x, y, z0, t0)) .* beta;
复制代码

或者可以试试用meshgrid将经纬度向量扩展为经纬度矩阵,然后向量化计算dvo_dx和dvo_dy
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-3-28 00:11:46 | 显示全部楼层
Sigmas 发表于 2023-3-27 22:39
哦,大意了,没注意到这个点 0o0

或者可以试试用meshgrid将经纬度向量扩展为经纬度矩阵,然后向量化计 ...

我也想这样过[lon1, lat1]=meshgrid(lon,lat);,但是vo他是1440x721的,也得转置一下,又是四维的,不知道如何转置了。
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-3-28 00:27:00 | 显示全部楼层
Sigmas 发表于 2023-3-27 22:39
哦,大意了,没注意到这个点 0o0

或者可以试试用meshgrid将经纬度向量扩展为经纬度矩阵,然后向量化计 ...

好像跑通了,晚上都被x,y搞晕掉了,感谢前辈。
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2023-4-1 09:51:37 | 显示全部楼层
谢谢分享!!!!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表