Matlab 嵌套函数句柄
Matlab nested function handle
我们正在为数据通信分配任务,我们必须在 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
int_gran=@(delta,i) int(f,u,q(i)-delta/2,q(i)+delta/2);
s_gran=@(delta) symsum(int_gran(delta,i),i,0,M);
%OVERLOAD
s_ol=@(delta) int(@(u)f(u,1),u,-inf,q(1)-delta/2)+int(@(u)f(u,M),q(m)+delta/2,inf);
%GKD
s_e=@(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)
s_e=@(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
。问题是您传递给 d
的 x
未定义。匿名函数本身没有问题。
f = @(x) x.^2;
d = @(x,u) f(x) + u;
d(1, 2)
% 3
如果您想使用 x
和 u
作为 d
的输入,您需要定义它们
x = 1; u = 2;
d(x, u)
我们正在为数据通信分配任务,我们必须在 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
int_gran=@(delta,i) int(f,u,q(i)-delta/2,q(i)+delta/2);
s_gran=@(delta) symsum(int_gran(delta,i),i,0,M);
%OVERLOAD
s_ol=@(delta) int(@(u)f(u,1),u,-inf,q(1)-delta/2)+int(@(u)f(u,M),q(m)+delta/2,inf);
%GKD
s_e=@(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)
s_e=@(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
。问题是您传递给 d
的 x
未定义。匿名函数本身没有问题。
f = @(x) x.^2;
d = @(x,u) f(x) + u;
d(1, 2)
% 3
如果您想使用 x
和 u
作为 d
的输入,您需要定义它们
x = 1; u = 2;
d(x, u)