有人可以解释为什么我的函数句柄不起作用吗?

时间:2017-11-20 20:17:55

标签: matlab

纽贝在这里所以请不要太苛刻。 我有这三个功能,每个功能都有自己的文件:

"@angular/animations": "^4.4.6",
"@angular/cdk": "github:angular/cdk-builds",
"@angular/common": "^4.0.0",
"@angular/compiler": "^4.0.0",
"@angular/core": "^4.0.0",
"@angular/forms": "^4.0.0",
"@angular/http": "^4.0.0",
"@angular/material": "github:angular/material2-builds",
"@angular/platform-browser": "^4.0.0",
"@angular/platform-browser-dynamic": "^4.0.0",
"@angular/router": "^4.0.0",
"@ng-idle/core": "^2.0.0-beta.12",
"@ng-idle/keepalive": "^2.0.0-beta.12",
"angular2-moment": "^1.7.0",
"angular2-recaptcha": "^0.6.0",
"angulartics2": "^3.3.0",
"bootstrap": "^3.3.7",
"chartjs": "^0.3.24",
"core-js": "^2.4.1",
"file-saver": "^1.3.3",
"financejs": "^4.1.0",
"moment": "^2.18.1",
"ng2-ckeditor": "^1.1.9",
"ng2-currency-mask": "^4.4.1",
"ng2-slim-loading-bar": "^4.0.0",
"ngx-toastr": "^6.2.0",
"primeng": "^4.3.0",
"rxjs": "^5.1.0",
"web-animations-js": "^2.3.1",
"zone.js": "0.8.14"

如你所见,我想使用一个函数句柄,所以我可以在底部的两个函数中使用round。 函数必须在他们自己的文件中(到目前为止在matlab中不是问题)。 我的语法已关闭,但我无法找到一个处理带有两个变量的函数句柄的教程。

1 个答案:

答案 0 :(得分:0)

如果我理解,函数句柄rd仅存在于第一个脚本中,而其他脚本无法访问它。 如果您将第一个文件(函数)命名为runden.m,并在其他函数中定义rd而不在第一个函数中,则可以访问它。

两个注意事项 - 不要将保留的函数名称覆盖为add,并使用end代替endfunction

我建议安排这样的功能:

% file 1, named `runden.m`
function y = runden(x,L)
  format long
  y = (round(x*10^L))/10^L;
end

% file 2, named `ad.m`
function z = ad(x,y,L)
  format long
  rd = @(x) runden(x,L);
  z = rd(rd(x)+rd(y));
end

% file 3, named `mult.m`
function z = mult(x,y,L)
  format long
  rd = @(x) runden(x,L);
  z = rd(rd(x)*rd(y));
end