如何在MATLAB中保存数据点Z值并筛选等高线内数据?
MATLAB筛选等高线内部数据点解决方案
问题背景
已通过MATLAB计算得到二维密度场Z,并绘制出Z=4e-5的红色等高线,需筛选出givenData中位于该等高线内部的点,剔除外部点。
解决方案
核心思路是通过插值获取每个数据点对应的Z值,再与阈值4e-5比较,判断点是否位于等高线内部:
- 插值获取数据点对应的Z值
使用interp2函数对givenData中的每个点进行Z值插值,匹配生成Z的网格xgrid和ygrid:
% 对给定数据点进行线性插值,得到对应Z值;超出网格范围的点返回0 Z_interp = interp2(xgrid, ygrid, Z, givenData(:,1), givenData(:,2), 'linear', 0);
- 筛选内部点
根据插值得到的Z值与阈值比较,筛选出内部点(默认等高线内部为Z≥4e-5的区域,若业务逻辑为内部Z更小,可修改判断条件):
% 筛选位于等高线内部的点 innerPoints = givenData(Z_interp >= 4e-5, :); % 可选:获取外部点 outerPoints = givenData(Z_interp < 4e-5, :);
- 验证结果(可选)
绘制图形验证筛选结果,内部点用红色标记:
figure; plot(givenData(:,1), givenData(:,2), 'b.', 'MarkerSize', 3); hold on; contour(xgrid,ygrid,Z,[4e-5, 4e-5],'EdgeColor',[1 0 0],'ShowText','on','LineWidth',2); plot(innerPoints(:,1), innerPoints(:,2), 'r.', 'MarkerSize', 5); hold off;
内容的提问来源于stack exchange,提问作者Arjun Krishnan
相关产品推荐
相关产品推荐

