2017-01-31 9 views
0

フロア用のWi-Fiルーターの値があります。今私はいくつかの既知の点でいくつかの値を予測する逆平方法を使用してこれらの値を補間しようとしており、得られた値と実際の値と比較したい。 私はMatlabを使用していますが、どのように関数を書くことができますか?matlabを使用して逆平方法を使用して値を予測する方法

+0

あなたは車の行列を持っていますテイジアン座標?それは2Dですか? 3D? –

+0

私は1から100の範囲のx、yを考えています –

答えて

0

ルータが1台しかなく、信号がc/||r||^2(ここで、cは一定の定数で、rはルータまでの距離を表す2Dまたは3D空間でベクトル)の場合、単純なインラインあなたは、X、Y、距離のZ成分を持っている場合は、値の2Dまたは3Dマトリックスを使用している場合、関数は、

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

ように見える...

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

それを計算する関数それから

01あなただけのルータのオブジェクトと位置R0の位置rを持っている場合にのみ補間する必要がある場合は
f = @(r) c ./ sum(r.^2); % if r = 2xn or 3xn 
f = @(r) c ./ sum(r.^2,2); % if r = nx2 or nx3 

最後に、あなたはそのすべてを意味し、以下の

% 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 

としてinterpolableエリア内の任意の値を補間する面として

[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

私は1つのことを尋ねたい:なぜ我々は補助機能を使用しているのか、なぜここで重要なのか? –

+0

プロットするだけで、 'ezsurf'は' scatteredInterpolant'型の関数を扱うことができません。しかし、ポイントを照会する必要はありません。 'foo'を直接使用すると十分です –

+0

おかげで、それは完全に助けになりました –

関連する問題