MatLab中的元素指数乘法元素

时间:2014-05-24 16:01:21

标签: matlab

我试图在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  

我已将.用于此主题。

2 个答案:

答案 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)。如果省略.,我不确定它在做什么,但它似乎定义得很好,至少是一致的。

通常,您可以使用bsxfunMATLAB bsxfun)在两个向量之间或在常量和向量之间执行任何操作(甚至是您定义的操作)。例如,要执行您要求的电源操作,您可以执行以下操作:

bsxfun(@power, e, x)

bsxfun(@power, e, x*2)

这实际上是一种非常有效的方式来做很多整洁的事情,但在你的情况下,功能已经内置了.^

修改:添加了一些链接

答案 1 :(得分:1)

你可以使用: expm(x)这是矩阵指数。