根据风向过滤数据

5视图(30天)
米歇尔•Smit
米歇尔•Smit 2022年3月22日
回答: 米歇尔•Smit2022年3月22日
亲爱的读者,
目前我使用一个数据集组成的风速(v)和方向(φ)在几个位置。我需要根据风向过滤数据集。我已经确定的主导风的方向在每个位置和需要删除所有的数据以外的主导方向+ / - 30度。这当然没问题,当主波方向是30到330度。然而,当主导方向小于30度或超过330度,它就会有问题,自360年以来度等于0度(北)。
假设有:
v =兰德(1000 1)* 15%风速介于0到15米/秒
φ=兰德(1000 1)* 360%风向0到360度之间
它不应该是困难的,但我不能算出来。什么是一个简单的解决方案来过滤数据集根据风向,占风向实际上是圆形的数据?
提前感谢!

答案(1)

米歇尔•Smit
米歇尔•Smit 2022年3月22日
别介意,我设法找到一个解决方案。它不是很优雅,但至少工作原理:
v =兰德(1000 1)* 15;
φ=兰德(1000 1)* 360;
Data = [v,φ);
θ= 30;
theta_bounds = (theta-45,θ+ 45);
如果theta_bounds (1) < 0;%为θ略高于0
L_bound = rem (360 + theta_bounds (1), 360);
U_bound = rem (360 + theta_bounds (2), 360);
%数据可以基于一个或声明
idx =找到(数据(:,2)> = L_bound |数据(:,2)< = U_bound);
Data_cut =数据(idx:);
elseiftheta_bounds (2) > 360;%为θ略低于360
L_bound =快速眼动(theta_bounds (1), 360);
U_bound =快速眼动(theta_bounds (2), 360);
%数据可以基于一个或声明
idx =找到(数据(:,2)> = L_bound |数据(:,2)< = U_bound);
Data_cut =数据(idx:);
其他的
% 330θ之间
L_bound =快速眼动(theta_bounds (1), 360);
U_bound =快速眼动(theta_bounds (2), 360);
%可以减少数据基于和声明
idx =找到(数据(:,2)> = L_bound &数据(:,2)< = U_bound);
Data_cut =数据(idx:);
结束
图()
散射(数据(:,2),数据(:1),10日“填充”)
持有
散射(Data_cut (:, 2), Data_cut(: 1), 10日“填充”)
xlim ([0360])

类别

找到更多的在滤波器帮助中心文件交换

s manbetx 845


释放

R2019b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!