我试图在MatLab中执行自定义函数,这样作为向量的x
实际上是常量e
的指数。我已尝试将dot
放置在多个地方,但它一直在抛出错误,告诉我在.
之前使用^
,这不是我想要的做这个场合。 Y
需要返回一个向量而不是常量。
x = [0:0.1:1];
function y = hyperT(x)
e = exp(1);
y = ((e^x*2)-1)/((e^x*2)+1);
end
我已将.
用于此主题。
答案 0 :(得分:2)
要获取矢量,您可以使用(MATLAB power operator):
y = ((e.^x*2) - 1) ./ (e.^(x*2) + 1);
.
运算符基本上意味着“逐元素”。例如,如果要将两个向量x = [x1, x2, x3]
和y = [y1, y2, y3]
相乘,则使用.*
运算符将每个元素乘以另一个向量中的对应元素,同时使用*
没有.
的运算符执行内积(matrix multiplication):
x.*y = [x1y1, x2y2, x3y3]
x*y = error (inner matrix dimensions must agree)
x'*y = [x1y1, x2y1, x3y1;
x2y1, x2y2, x3y2;
x1y3, x2y3, x3y3]
x*y' = x1y1 + x2y2 + x3y3
请注意,上面的'
会转换向量。
有些运营商会自动广播,因为它们的用途不明确。因此,.
和+
运算符不需要-
。奇怪的是,除法运算符不会自动广播,因此您需要使用./
(MATLAB rdivide)。如果省略.
,我不确定它在做什么,但它似乎定义得很好,至少是一致的。
通常,您可以使用bsxfun
(MATLAB bsxfun)在两个向量之间或在常量和向量之间执行任何操作(甚至是您定义的操作)。例如,要执行您要求的电源操作,您可以执行以下操作:
bsxfun(@power, e, x)
或
bsxfun(@power, e, x*2)
这实际上是一种非常有效的方式来做很多整洁的事情,但在你的情况下,功能已经内置了.^
。
修改:添加了一些链接
答案 1 :(得分:1)
expm(x)
这是矩阵指数。