如何访问x的矩阵函数中的数组?

时间:2013-12-22 11:46:22

标签: matlab function matrix

让我们考虑一个(向量或矩阵)函数,如下所示:

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)

但它不起作用。

3 个答案:

答案 0 :(得分:1)

  1. 在Matlab中执行此操作的最佳方法是使用中间变量:

    temp = matfunc(3);
    temp(1,3)
    
  2. 可以直接进行(没有中间变量),但不建议:繁琐且难以阅读。请参阅here

  3. 另一种可能性是使用函数的单元格数组(而不是向量函数):

    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(输入)”