我在matlab中有一个函数句柄,我想输入一个向量来返回一个经过函数映射的向量。但是这个函数在两个参数中有所不同,所以我希望能够输入该标量的值以及函数值。
功能是:
syms a
g = @(y) (exp(((-1/a).*atanh(y)).^2).*cos((2/a).*atanh(y)).*(1/a).*(1/(1+y.^2)));
或者我也可以
g = @(y,a) (exp(((-1/a).*atanh(y)).^2).*cos((2/a).*atanh(y)).*(1/a).*(1/(1+y.^2)));
我希望能够做的是
values = g([-0.5 0 0.5],3);
并返回一个三元素向量。
但这会返回错误,我不知道如何让它按照我的意愿执行。
答案 0 :(得分:3)
我认为你在最后一个部门忘记了一个.
:
g = @(y,a) (exp(((-1/a).*atanh(y)).^2).*cos((2/a).*atanh(y)).*(1/a).*(1./(1+y.^2)));
这适合我。
BTW:如果你这样做:
g = @(y,a) (exp(((-1./a)*atanh(y)).^2).*(cos((2./a)*atanh(y))).*((1./a)*(1./(1+y.^2))));
您可以同时输入y
和a
作为向量:
g([-0.5 0 0.5],[1 2 3]')
ans =
0.49202 1.00000 0.49202
0.36789 0.50000 0.36789
0.25747 0.33333 0.25747
这是:
g([a b c], [d e f]')
ans =
g(a,d) g(b,d) g(c,d)
g(a,e) g(b,e) g(c,e)
g(a,f) g(b,f) g(c,f)