让我们考虑一个(向量或矩阵)函数,如下所示:
matfunc=@(x)[x^2 cos(x) e^x 3*x];
我想访问指定的数组,在x = 3时像(1,3)。 我怎样才能在MATLAB中做到这一点? 我试过了:
matfunc(3)(1,3)
(matfunc(3))(1,3)
matfunc(3,1,3)
但它不起作用。
答案 0 :(得分:1)
在Matlab中执行此操作的最佳方法是使用中间变量:
temp = matfunc(3);
temp(1,3)
可以直接进行(没有中间变量),但不建议:繁琐且难以阅读。请参阅here。
另一种可能性是使用函数的单元格数组(而不是向量函数):
matfunc = {@(x) x^2, @(x) cos(x), @(x) exp(x), @(x) 3*x};
使用这种方法,您可以组合两个索引(首先是单元格索引以选择函数组件;然后是输入参数):
matfunc{3}(3)
答案 1 :(得分:1)
您正在尝试使用不正确的语法。您需要先评估函数,然后才能索引到结果变量:
A = matfunc(3);
A(1,2)
如果你想把所有东西放在一行上,你可能不会喜欢这个,但这就是Matlab的工作方式。如果你真的想把它放在一行上,你可以定义一个执行索引的辅助函数(在另一行上):
index = @(A,i,j)A(i,j);
index(matfunc(3),1,2)
答案 2 :(得分:0)
最好是写 [α] = matfunc(输入); a(1,3)%这给你的元素1,3“a”输出“matfunc(输入)”