0
matlabでネストされた関数ハンドルを宣言する必要があるデータ通信の割り当てに取り組んでいます。 私たちはmatlabがこれをどのように処理するかについていくつかのテストを行いましたが、何も動作しません。Matlabのネストされた関数ハンドル
これはテストのいずれかです。このテストMATLABに
clear;
f = @(x) x.^2;
d = @(x,u) f(x) + u;
disp(d(x,u));
は、未定義の関数や変数xを与えます。 これを解決するにはどうすればよいですか?
種類は
完全なコードについて:
[~, distr] = make_probability_functions(Quantization.filename);
%distr is a matrix of certain values
x_0 = 127.5;
M = 8;
delta= 10:1:30;
q = @(i) x_0+(i-(M+1)/2);
r = @(i) x_0+((2*i-M)*delta)/2;
f = @(u,i) ((q(i)-u).^2)*distr(u);
%GRANULAR
[email protected](delta,i) int(f,u,q(i)-delta/2,q(i)+delta/2);
[email protected](delta) symsum(int_gran(delta,i),i,0,M);
%OVERLOAD
[email protected](delta) int(@(u)f(u,1),u,-inf,q(1)-delta/2)+int(@(u)f(u,M),q(m)+delta/2,inf);
%GKD
[email protected](delta) s_gran(delta)+s_ol(delta);
%plot GKD
plot(delta,s_e(delta),delta,s_gran(delta),delta,s_ol(delta));
エラー:
Undefined function or variable 'u'.
Error in Quantization>@(delta,i)int(f,u,q(i)-delta/2,q(i)+delta/2)
Error in Quantization>@(delta)symsum(int_gran(delta,i),i,0,M)
Error in Quantization>@(delta)s_gran(delta)+s_ol(delta) (line 59)
[email protected](delta) s_gran(delta)+s_ol(delta);
Error in Quantization.determine_optimal_uniform_quantizer (line 62)
plot(delta,s_e(delta),delta,s_gran(delta),delta,s_ol(delta));
Error in script_run (line 1)
Quantization.determine_optimal_uniform_quantizer();
を定義する必要があります、私は理解しますが、私は、関数D(X、U)を渡したいです一般に、例えば、それは同じ誤差を与える。これはちょうどテストだった、私は私の主な質問を編集し、私たちがエラーを取得する 'メイン'コードを追加します。 – Joachim
@Joachim私が達成しようとしていることは、シンボリック変数を使用することだと思います。宣言されていない変数の値を関数に渡すことはできません。[シンボリック変数の詳細](https://de.mathworks.com/help /symbolic/syms.html) – Umar
問題は何だったのでしょうか。あなたは私の一日を作った、ありがとう! – Joachim