2017-01-31 73 views
0

我有一些值从wifi路由器的地板。现在我试图使用平方反比法插值这些值来预测某些已知点的某些值,并想要与获得的值和实际值进行比较。 我正在使用Matlab,我如何编写函数。如何通过使用matlab使用平方反比法来预测值

+0

所以你有一个汽车矩阵tesian坐标?它是2D吗? 3D? –

+0

我正在考虑x,y的范围为1到100 –

回答

0

如果您有一个路由器,并且信号速率为c/||r||^2,其中c是某个常数,r是表示距离路由器的距离的二维或三维空间矢量,则可以创建一个简单的内联函数来计算......

f = @(r) c ./ norm(r)^2 

如果有X,Y,距离z分量,功能看起来像

f = @(x,y,z) c ./ (x.^2 + y.^2 + z.^2) 

如果你有值的2D或3D矩阵,然后使用

f = @(r) c ./ sum(r.^2); % if r = 2xn or 3xn 
f = @(r) c ./ sum(r.^2,2); % if r = nx2 or nx3 

最后,如果你只有路由器的目标和位置Ro的位置r,那么你可以使用以下

% If router position is fixed for all test points... 
f = @(x,y,z) c ./ ((x-x0).^2 + (y-y0).^2 + (z-z0).^2) 

% If you want to test multiple router positions... 
f = @(x,y,z,x0,y0,z0) c ./ ((x-x0).^2 + (y-y0).^2 + (z-z0).^2) 
+0

我有多个路由器和一些已知的其他参考点。然后想要计算要预测的值。 –

+0

那么上面是一个模板来做到这一点。我不知道你试图使用什么公式。 –

+0

我想把F = power/r^2 –

0

之一,如果你只需要插值,也就是说,所有查询点位于抽样点的凸包内,我建议使用scatteredInterpolanthttps://www.mathworks.com/help/matlab/ref/scatteredinterpolant-class.html。它的使用和可视化非常简单。

%%Create 10 random points as example 
x=rand(10,1)*100; 
y=rand(10,1)*100; 
strenght=rand(10,1)*100; 

%% Use these data to create an interpolant function 
foo=scatteredInterpolant(x,y,strenght,'natural','none'); 

此时功能foo将内插作为foo(x,y)

foo(50,50) 
%% ans = 24.6063 

,能够通过绘制可视化此功能的倍频细区域内的任何值作为表面

[email protected](a,b) foo(a,b) %% Auxiliar function 
ezsurf(foos,[0 100 0 100]) %% Plot the function 
hold on 
scatter3(x,y,strenght,'ro','filled') %% Add original points to see how it was calculated 

enter image description here

+0

感谢您的帮助。我想问一件事:为什么我们使用辅助功能,为什么它在这里很重要? –

+0

只是为了帮助绘图,'ezsurf'不能处理'scatteredInterpolant'类型的函数。但是它不需要查询点,直接使用'foo'就够了 –

+0

谢谢,那帮忙满了 –

相关问题