私は、与えられた距離(d)における信号受信パワー(p)の測定値と未知の係数n1およびn2を持つモデルを持っています。私がしなければならないのは、n1とn2の値がRMSエラーを最小限に抑えることです。私はlsqnonlinを使って解決策を見てきましたが、区分的に定義された関数では解決しませんでした。私はmatlabで本当のnoobだと私は多くのトラブルを抱えている、助けてください!これまでのところ、私はmodel.mスクリプトウィッヒを定義したmodelモデルフィッティングMATLAB
上記の式を定義しています:
与えられたモデルです
function y = modelo(d,ht,hr,h0,f,data)
y=NaN(size(d));
c=3*10^8;
lambda=c/f;
rbp = 4*(ht-h0)*(hr-h0)/lambda
if d <= rbp
y = 20*log10(4*pi/lambda)+10*@(x)x(1)*log10(d)-data;
else
y =20*log10(4*pi/lambda)+10*@(x)x(1)*log10(d) + 10*@(x)x(2)*log10(d)-data;
end
dパラメータは、距離ベクトルであり、データが測定され、その距離の電力。他のパラメータはすべて固定数です。
次に、lsqnonlinを使用しようとしていますが、動作しません。どのようにこれを解決するための任意のアイデアですか?
ありがとうございました!今ではn1とn2を計算することができました。 ||と&&の演算子は論理スカラ値に変換可能でなければならないので、最初のif条件を修正しなければならなかったので、最初の条件(dRef <= d)を削除しました.dRefが1 dのすべてのdiが1より大きい場合、それをテストする必要はありません。私はあなたにその価値を知らせなかったので、私はあなたにその価値を知らせなかった。 私のデータでテストを行い、それは私にn1 = 2.2261とn2 = -3.2028を与えました。それで、私は上記の係数でモデルの値を計算しようとしましたが、それは私に非常に与えました –
@RoniBerezin私はそれがうまく動作してうれしいです。 &&は、実際には自分のミスです(私はファイルに修正しました)。私は2つのマリジを比較しているので&&を使わないと言っていました。 [推理](https://stackoverflow.com/questions/1379415/whats-the-difference-between-and-in-matlab) – user9985
...私が持っているデータと比較して遠い値。私はそれが間違って計算するかもしれないと思う。与えられたn1とn2を使ってそのモデルのdのすべてのdiの値を計算する方法を知っていますか?あなたの助けをありがとう –