【问题标题】:Matlab - make function work with vectors and scalarsMatlab - 使函数与向量和标量一起使用
【发布时间】:2015-11-04 11:11:29
【问题描述】:

我正在尝试编写一个可以是标量和向量的函数。这个函数应该处理标量、列向量和行向量。我的想法是我尝试使用 for 循环,但我的尝试没有成功。

function f=funk1(x);
for i =1:length(x)
 f=exp(-3*x(i).^2)-log(x(i)+0.6)+1/(x(i)-6);
end
end

这仅返回向量的最后一个值(在我的函数中),但我希望它返回向量中的每个值。

【问题讨论】:

    标签: matlab function for-loop


    【解决方案1】:

    对于这个特定的功能,您可以vectorize,也就是说,在没有循环的情况下一次按元素进行所有计算。在数组之间应用时,您只需在 *^/ 运算符之前添加一个点(logexp 已经是逐元素的):

    function f = funk1(x);
    f = exp(-3*x.^2)-log(x+0.6)+1./(x-6);
    end
    

    【讨论】:

    • 像往常一样,过度矢量化解决方案;)干得好!
    • @Adriaan 矢量化永远不会“结束”! :-P
    【解决方案2】:

    您错过了 f 的索引。这样做;

    function f=funk1(x);
    for i =1:length(x)
       f(i)=exp(-3*x(i).^2)-log(x(i)+0.6)+1/(x(i)-6);
    end
    end
    

    【讨论】:

    • 谢谢!不敢相信我错过了! :)
    猜你喜欢
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 2021-01-20
    • 2010-09-24
    • 2019-07-14
    相关资源
    最近更新 更多