0
我們正在爲datacommunications進行分配,我們必須在matlab中聲明一個嵌套函數句柄。 我們對matlab如何處理這個問題做了一些測試,但沒有任何效果。Matlab嵌套函數句柄
這是其中一個測試:
clear;
f = @(x) x.^2;
d = @(x,u) f(x) + u;
disp(d(x,u));
通過該測試的matlab給出了一個未定義的函數或變量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