让我们考虑一个(向量或矩阵)函数象下面这样:如何访问x的矩阵函数中的数组?
[email protected](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)
但它不起作用。
让我们考虑一个(向量或矩阵)函数象下面这样:如何访问x的矩阵函数中的数组?
[email protected](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)
但它不起作用。
做,在Matlab是使用一个中间变量的最佳方式:
temp = matfunc(3);
temp(1,3)
它可以直接做到这一点(没有一个中间变量),但不建议:笨重,不易可读。见here。
另一种可能性是使用的功能的单元阵列(而不是矢量函数):
matfunc = {@(x) x^2, @(x) cos(x), @(x) exp(x), @(x) 3*x};
通过这种方法可以结合两个indexings(第一小区索引,以选择功能部件;然后输入参数):
matfunc{3}(3)
您正在尝试使用不正确的语法。你需要先评估功能,那么你就可以索引到结果变量:
A = matfunc(3);
A(1,2)
你可能不会,如果你想在一行中得到的一切就是这样,但这是Matlab的是如何工作的。如果你真的想把这在同一行,你可以定义一个辅助函数(另一条线路上)执行索引:
index = @(A,i,j)A(i,j);
index(matfunc(3),1,2)
最好是写 [A] = matfunc(输入); a(1,3)%这给你输出“matfunc(输入)”的“a”的元素1,3
+1帮助函数的想法 –