根据评论,您有以下信息

%the test point

ri=0.53224;

ti = pi/8;

%formula fo generation of Z

g=9.81

z0=@(r)0.01*(g^2)*((2*pi)^-4)*(r.^-5).*exp(-1.25*(r/0.3).^-4);

D=@(t)(2/pi)*cos(t).^2;

z2=@(r,t)z0(r).*D(t) ;

%range of vlaues of r and theta

r=[0.05,0.071175,0.10132,0.14422,0.2053, 0.29225,0.41602,0.5922,0.84299,1.2];

t=[0,0.62832,1.2566,1.885, 2.5133,3.1416,3.7699,4.3982,5.0265,5.6549,6.2832];

并且您希望插入测试点。

当您对某些数据进行采样以将其用于插值时,您应该考虑如何根据您的要求对数据进行采样。

因此,当您对极坐标的常规网格进行采样时,这些坐标在转换为矩形时将形成圆形形状

大多数点都集中在cricle的中心,当我们从中心移动到外部区域时,点之间的距离增加。

%regular grid generated for r and t

[THETA R] = meshgrid(t ,r);

% Z for polar grid

Z=z2(R,THETA);

%convert coordinate from polar to cartesian(rectangular):

[X, Y] = pol2cart (THETA, R);

%plot points

plot(X, Y, 'k.');

axis equal

因此,当您使用这些点进行插值时,插值的精度在中心处较大,而在点之间距离增加的外部区域中则较低。

换句话说,使用这种采样方法,您更重视与外部区域相关的中心区域。

为了提高准确度,应增加网格点(r和theta)的密度,因此如果r和theta的长度为11,则可以创建大小为20的r和theta以提高精度。

另一方面,如果在直角坐标中创建常规网格,则每个区域都具有相同的重要性。因此,插值的准确性在所有地区都是相同的

首先,在极坐标中创建一个规则网格,然后将网格转换为直角坐标,这样就可以计算出直角坐标中采样点的范围(最小最​​大值)。基于此范围,您可以在直角坐标中创建规则网格

然后使用z2公式将直角坐标的规则网格转换为极坐标以获得网格点的z。

%get the extent of points

extentX = [min(X(:)) max(X(:))];

extentY = [min(Y(:)) max(Y(:))];

%sample 100 points(or more or less) inside a region specified be the extents

X_samples = linspace(extentX(1),extentX(2),100);

Y_samples = linspace(extentY(1),extentY(2),100);

%create regular grid in rectangular coordinates

[XX YY] = meshgrid(X_samples, Y_samples);

[TT RR] = cart2pol(XX,YY);

Z_rect = z2(RR,TT);

对于测试点的插值说[ri ti]首先将其转换为矩形,然后使用XX ,YY z值进行插值

[xi yi] = pol2cart (ti, ri);

z=interp2(XX,YY,Z_rect,xi,yi);

如果您无法更改数据采样方式,并且只有@RodyOldenhuis讨论的极点网格,您可以执行以下操作:

使用interp2插入极坐标(网格化数据的插值)

这种方法很简单,但缺点是r和θ不是相同的比例,这可能会影响插值的准确性。

z = interp2(THETA, R, Z, ti, ri)

将极坐标转换为矩形,然后应用针对散乱数据的插值方法。

这种方法需要更多的计算,但结果更可靠。

MATLAB具有griddata函数,给定散乱点首先生成点的三角剖分,然后在三角形顶部创建规则网格并插入网格点的值。

因此,如果要插入点[ri ti]的值,则应该应用第二个插值来从插值网格中获取点的值。

醇>

借助spatialanalysisonline和Wikipedia基于三角测量的线性插值的一些信息帮助(在Octave中测试。在较新版本的MATLAB中使用triangulation和{{1推荐而不是pointLocation和delaunay):

tsearch

更多细化:

由于已知搜索点被4个点包围,因此我们只能使用这些点进行三角测量。这些点形成一个梯形。梯形的每个对角线形成两个三角形,因此使用梯形的顶点我们可以形成4个三角形,梯形内部的点也可以位于至少2个三角形中。

基于三角测量的先前方法仅使用来自一个三角形的信息,但是测试点的z可以从两个三角形的数据内插两次,并且计算的z值可以被平均以获得更好的近似。

ri=0.53224;

ti = pi/8;

[THETA R] = meshgrid(t ,r);

[X, Y] = pol2cart (THETA, R);

[xi yi] = pol2cart (ti, ri);

%generate triangulation

tri = delaunay (X, Y);

%find the triangle that contains the test point

idx = tsearch (X, Y, tri, xi, yi);

pts= tri(idx,:);

%create a matrix that repesents equation of a plane (triangle) given its 3 points

m=[X(pts);Y(pts);Z(pts);ones(1,3)].';

%calculate z based on det(m)=0;

z= (-xi*det(m(:,2:end)) + yi*det([m(:,1) m(:,3:end)]) + det(m(:,1:end-1)))/det([m(:,1:2) m(:,end)]);

结果:强>

%find 4 points surrounding the test point

ft= find(t<=ti,1,'last');

fr= find(cos(abs(diff(t(ft+(0:1))))/2) .* r < ri,1,'last');

[T4 R4] = meshgrid(t(ft+(0:1)), r(fr+(0:1)));

[X4, Y4] = pol2cart (T4, R4);

Z4 = Z(fr+(0:1),ft+(0:1));

%form 4 triangles

tri2= nchoosek(1:4,3);

%empty vector of z values that will be interpolated from 4 triangles

zv = NaN(4,1);

for h = 1:4

pts = tri2(h,:);

% test if the point lies in the triangle

if ~isnan(tsearch(X4(:),Y4(:),pts,xi,yi))

m=[X4(pts) ;Y4(pts) ;Z4(pts); [1 1 1]].';

zv(h)= (-xi*det(m(:,2:end)) + yi*det([m(:,1) m(:,3:end)]) + det(m(:,1:end-1)))/det([m(:,1:2) m(:,end)]);

end

end

z= mean(zv(~isnan(zv)))

结论强>:

与原始数据结构和采样方法相关的插值结果。如果采样方法匹配原始数据模式的插值结果更准确,那么在极坐标网格点遵循数据模式的情况下,常规极坐标插值结果可以更可靠。但是如果常规极坐标不匹配数据结构或数据结构如不规则地形,基于三角测量的插值方法可以更好地表示数据。

Matlab 极坐标平面 插值,如何在极坐标中进行插值相关推荐

  1. matlab插值与拟合例题_MATLAB中数据插值和数据拟合的用法

    一.数据插值: 插值是在一组已知数据点的范围内添加新数据点的技术.可以使用插值来填充缺失的数据.对现有数据进行平滑处理以及进行预测等.MATLAB 中的插值技术可分为适用于网格上的数据点和散点数据点. ...

  2. 高斯拟合原理_数据分析中的插值与拟合(2) —— 拟合

    引言 前文介绍了通过插值来估计未知数据的方法. 蒙特遇见卡罗:数据分析中的插值与拟合(1) -- 插值​zhuanlan.zhihu.com 拟合的方法应用非常广泛,数据处理.参数估计和统计学习等:可 ...

  3. matlab波的极化特性,Matlab GUI在电磁波极化特性教学中的应用

    科技创新导报 2018 NO.16Science and Technology Innovation Herald 创新教育 科技创新导报 Science and Technology Innovat ...

  4. matlab全域基函数,多项式函数插值:全域多项式插值(一)单项式基插值、拉格朗日插值、牛顿插值 [MATLAB]...

    全域多项式插值指的是在整个插值区域内形成一个多项式函数作为插值函数.关于多项式插值的基本知识,见"计算基本理论". 在单项式基插值和牛顿插值形成的表达式中,求该表达式在某一点处的值 ...

  5. 基于MATLAB的平面刚架有限元分析,基于MATLAB的平面刚架静力分析.pdf

    工程计算实践作业 基于 MATLAB的平面刚架静力分析 为了进一步理解有限元方法计算的过程, 本文根据矩阵位移法的基本原理应 用 MATLAB编制计算程序对以平面刚架结构进行了静力分析. 本文还利用 ...

  6. matlab中投影,MATLAB在极射赤平投影中的应用

    文章编号: 100926825 (2010) 360357202 MATLAB在极射赤平投影中的应用 收稿日期: 20100822 作者简介:潘冀川 (1988) ,男 ,石家庄经济学院本科生 ,河北 ...

  7. MATLAB梯度和拉普拉斯算子在图像边缘检测中的应用

    MATLAB梯度和拉普拉斯算子在图像边缘检测中的应用 数学方法 边缘检测最通用的方法是检测灰度值的不连续性,这种不连续性用一阶和二阶导数来检测. (1)一阶导数:一阶导数即为梯度,对于平面上的图像来说 ...

  8. 基于MATLAB的平面刚架有限元分析,基于MATLAB的平面刚架静力分析

    工程计算实践作业 基于MATLAB的平面刚架静力分析 为了进一步理解有限元方法计算的过程,本文根据矩阵位移法的基本原理应用MATLAB编制计算程序对以平面刚架结构进行了静力分析.本文还利用ANSYS大 ...

  9. 立方卷积插值 matlab,matlab旋转实现(最近邻值,双线性,三次卷积插值实现插值)

    数字图像处理,使用matlab实现旋转(最近邻值,双线性,三次卷积插值实现插值) 对图像进行旋转,使用最近邻插值法,双线性插值,三次卷积插值三种方法进行插值. 源码: clc;clear all;cl ...

  10. 基于MATLAB的平面刚架有限元分析,根据MATLAB的平面刚架静力分析.doc

    根据MATLAB的平面刚架静力分析.doc 基于MATLAB的平面刚架静力分析为了进一步理解有限元方法计算的过程,本文根据矩阵位移法的基本原理应用MATLAB编制计算程序对以平面刚架结构进行了静力分析 ...

最新文章

  1. Python中printf函数中逗号引发的区别
  2. linux 检索全部文件中的中文词汇,linux – 获取所有文件中的单词计数
  3. Linux Shell 逻辑运算符、逻辑表达式详解
  4. 麦肯锡:潜力巨大,障碍多多,人工智能医疗是蓝海还是虚火?
  5. 《突破C#编程实例五十讲》源文件下载(2)
  6. linux中执行jmx脚本,在linux服务器下JMeter如何执行jmx性能脚本
  7. IAR建立CC2530工程的设置问题及生成.hex文件
  8. 一道简单的python面试题-购物车
  9. 长篇小说《世界上最幸福的人》获得好评
  10. 语义分割未来发展如何?
  11. 图像有用区域(广搜)
  12. linux 链接第三方库
  13. Cadence orcad 使用MySQL搭建元件数据库及实例数据库下载
  14. 水系图一般在哪里找得到_水系电池再发Nature,事实力证将迎来发展的春天!
  15. mx350显卡天梯图_显卡天梯图2020新排行榜
  16. Error in cor(xdata) : 'x'必需为数值
  17. 正睿OIday1总结
  18. 电信重组:移动圈地联通抢山头 电信干等
  19. Delphi FastReport4.5安装说明
  20. 华为无线AC 配置内置Portal认证和Radius服务器示例

热门文章

  1. 《番茄todo》APP广告的设计与制作
  2. matlab 单位脉冲响应,滤波器系数、单位脉冲响应、频率响应等概念笔记
  3. Java设计模式:1.1.认识六个原则(开闭,里氏替代,依赖颠倒)
  4. 局部加权回归LOESS
  5. 服务器多IP有什么用?服务器多IP配置方法分享
  6. 一维数组(简单摇骰子小游戏)
  7. 如何用LambdaWrapper去实现去重查询
  8. 快手财报,广告、直播、电商齐头并进
  9. icon小图标集合网站
  10. Appium+python自动化(六)- 连接模拟器并启动淘宝APP(超详解)