我正在尝试重新制作我的旧函数,它取一个固定值x:
function [res] = Eph(x,approximation,dot)
a = [ 0.1818 0.5099 0.2802 0.02817];
b = [ 3.2 0.9423 0.4029 0.2016];
if dot ~= 1
res = sum(a.*exp(-b.*x));
现在我正在尝试传递一个向量x(对于每个x_ {i}都是相同的过程),我想要回到结果res
。有人可以给我一个提示如何不使用循环吗?
答案 0 :(得分:0)
我认为您可以通过矩阵乘法(对于b.*x
部分)和bsxfun
(对于a.*exp(...)
)部分进行组合:
res = sum(bsxfun(@times, a, exp(-x(:)*b)), 2);
您的代码示例,标量为x
:
>> x = 3;
>> res = sum(a.*exp(-b.*x))
>> res =
0.1292
我的代码示例,向量x
:
>> x = [3 4 5];
>> res = sum(bsxfun(@times, a, exp(-x(:)*b)), 2)
res =
0.1292
0.0803
0.0522