フィルターのクリア

Anonymous functions usage when running the following program to apply and then plot a prediction, sensor reading and measurement update Invalid expression.

1 回表示 (過去 30 日間)
I get error on the foll. program
"Invalid expression. When calling a function or indexing a variable, use parentheses.
Otherwise, check for mismatched delimiters."
U = [ 1 -1 3 4 ]; % an artificial input sequence
% applyPredictionUpdate returns the predicted state:
applyPredictionUpdate = @(bel, u_t) [bel '.PU(' num2str(u_t) ')'];
% readSensor returns the current sensor's reading:
readSensor = @() [ 'Z(' num2str(round(20*rand())) ')' ];
% applyMeasurementUpdate returns the state updated by the measurements:
applyMeasurementUpdate = @(sensorReading, belBar) [ belBar '.MU(' sensorReading ')' ];
bel = 'PRIOR';
for u_t = U
applyPredictionUpdate(bel, u_t);
readSensor();
applyMeasurementUpdate((sensorReading, belBar)[sensorReading, belBar]);
end
plotFilterLoop(bel);
  1 件のコメント
Ken
Ken 2022 年 3 月 26 日
Tried this got:"Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters."

サインインしてコメントする。

採用された回答

Ken
Ken 2022 年 3 月 26 日
Thanks, tried but error:
"Unrecognized function or variable 'sensorReading'.
Error in solution (line 14)
applyMeasurementUpdate(sensorReading, belBar);"
  6 件のコメント
Ken
Ken 2022 年 3 月 29 日
Checked the doc. - problem is that the bel in applyPredictionUpdate(bel, u_t); does not store the changed value, so after the applyP---, bel has to be stored in another variable say "a" and then used. I tried to store in "a" as shown - no luck. Any ideas appreciated.
for u_t = U
applyPredictionUpdate(bel, u_t);
a=applyPredictionUpdate(bel, u_t);
readSensor();
applyMeasurementUpdate(readSensor(),a);
end
Voss
Voss 2022 年 3 月 29 日
編集済み: Voss 2022 年 3 月 29 日
I'm not familiar with the MATLAB toolbox or 3rd party package that this is using, so I'm afraid I wouldn't be able to help.
Maybe start a new question about the error(s) you see and specify which MATLAB toolbox or 3rd party package you are using.

サインインしてコメントする。

その他の回答 (1 件)

Voss
Voss 2022 年 3 月 26 日
applyMeasurementUpdate is an anonymous function defined to take two inputs, sensorReading and belBar:
applyMeasurementUpdate = @(sensorReading, belBar) [ belBar '.MU(' sensorReading ')' ];
When calling applyMeasurementUpdate, you only need to give it those two inputs, like this:
applyMeasurementUpdate(sensorReading, belBar);
Just like you are calling applyPredictionUpdate with inputs bel and u_t a couple of lines above:
applyPredictionUpdate(bel, u_t);

カテゴリ

Help Center および File ExchangeSoftware Development Tools についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by