首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab嵌套函数句柄

Matlab嵌套函数句柄
EN

Stack Overflow用户
提问于 2016-12-07 14:18:48
回答 1查看 183关注 0票数 0

我们正在为数据通信分配任务,我们必须在matlab中声明一个嵌套函数句柄。我们做了一些关于matlab如何处理这个问题的测试,但是没有工作。

这是其中一个测试:

代码语言:javascript
复制
clear;
f = @(x) x.^2;
d = @(x,u) f(x) + u;
disp(d(x,u));

通过这个测试,matlab给出了一个未定义的函数或变量x。我们要做什么来修复这个问题呢?

亲切的问候

完整代码:

代码语言:javascript
复制
[~, 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));

错误:

代码语言:javascript
复制
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();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-07 14:23:45

您必须将实际值传递给d。问题是您要传递给xd没有定义。匿名函数本身没有问题。

代码语言:javascript
复制
f = @(x) x.^2;
d = @(x,u) f(x) + u;

d(1, 2)
%   3

如果要将xu用作d的输入,则需要定义它们

代码语言:javascript
复制
x = 1; u = 2;
d(x, u)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41019775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档