1

この問題に使用している 1000x2 のデータ ファイルがあります。

データを Acos(wt + phi) でフィッティングすることになっています。t は時間で、データ ファイルの最初の列、つまり独立変数です。適合パラメーター (A、f、ファイ) とその不確実性を見つける必要があります。

私のコードは次のとおりです。

%load initial data file
data = load('hw_fit_cos_problem.dat');
t = data(:,1); %1st column is t (time)
x = t;
y = data(:,2); %2nd column is y (signal strength)

%define fitting function
f = fittype('A*cos(w*x + p)','coefficients','A','problem',{'w','p'});

% check fit parameters
coeffs = coeffnames(f);

%fit data
[A] = fit(x,y,f)

disp('confidence interval/errorbars');
ci = confint(A) 

理解できない4つの異なるエラーメッセージが表示されます。

エラー メッセージ:

fit>iAssertNumProblemParameters の使用エラー (1113 行目) 問題のあるパラメーターがありません。fittype 内の問題パラメーターごとに 1 つの要素をもつ cell 配列として値を指定します。

fit>iFit のエラー (198 行目) iAssertNumProblemParameters( probparams, probnames( model ) );

適合エラー (109 行目) [fitobj, goodness, output, convmsg] = iFit( xdatain, ydatain, fittypeobj, ...

problem2 のエラー (14 行目) [A] = fit(x,y,f)

4

2 に答える 2

1

コード行

f = fittype('A*cos(w*x + p)','coefficients','A','problem',{'w','p'});

Aモデル内の「係数」として指定し、値wp「問題」パラメーターとして指定します。

したがって、フィッティング ツールボックスは、 および についてさらに情報を提供することを想定してwおりp、その後、 が変化しますAwおよびに関する追加情報pがフィッティング ツールに提供されなかった場合、エラーが発生しました。

wこのプロジェクトの目的や、なぜpが問題パラメータとして指定されたのかわかりません。ただし、簡単な解決策の 1 つは、次のように、ツールボックスがAw、および pを「係数」として扱えるようにすることです。

f = fittype('A*cos(w*x + p)','coefficients', {'A', 'w', 'p'});

この場合、コードはエラーをスローせず、 、 、および で 95% の信頼区間をA返しwますp

それが役立つことを願っています。

于 2012-10-21T22:01:53.533 に答える
0

あなたの質問に対する率直な答えは、w と p を問題固有の固定パラメーターとして識別したが、これらの固定値が何であるかを fit 関数に伝えていないため、「Missing problem parameters」というエラーが生成されるということです。

行を変更することでこれを行うことができます

[A] = フィット (x、y、f)

[A]=fit(x,y,f,'問題',{100,0.1})

これにより、フィットで値 w=100 および p=0.1 が提供されます。これにより、指定したエラーが解決されます (4 つのエラー メッセージはすべて、このエラーに起因します)。

一般に、当てはめ式の一部の量を問題固有の固定パラメーターとして指定することは有効な場合があります。たとえば、それらを個別に決定し、取得した値が信頼できると信じる十分な理由がある場合です。この場合、この方法で周波数 w を知ることができますが、ほとんどの場合、位相 p を知ることはできないため、それが適合係数になるはずです。

それが役立つことを願っています。

于 2013-07-06T18:53:12.190 に答える