【问题标题】:Array issues within function in matlabmatlab中函数内的数组问题
【发布时间】:2016-02-23 01:52:24
【问题描述】:

我想创建一个函数,从数组中的前两个元素开始,然后从它们创建斐波那契数列,但它会创建一个带有小数等的奇怪矩阵,它是我想要的列数的两倍每次。当我查找它时,这是我在阅读文档后想出的。

我几乎没有使用 MATLAB 的经验,而且我习惯了 python。我还没有找到真正解决我问题的任何东西。或者有帮助。

function [f,s] = fibb(nmax)
f = array(1,0);
% first two items in array are 0 and 1 respectively
for n = 3 : 1 : nmax
    f(n) = [f(n-1) + f(n-2) newElem];
    % Adds new entry, entry is sum of previous two
end
s = sum(f);
% sum of the sequence

【问题讨论】:

  • 什么是array(1,0)

标签: arrays matlab function


【解决方案1】:

array 不是 Matlab 中的内置函数。此外,斐波那契数列以[1,1] 开头。

尝试以下方法:

function [f,s] = fibb(nmax)
    f = [1,1];
    for n = 3 : nmax
        f(n) = f(n-1) + f(n-2);
    end
    s = sum(f);
end

可能有一种更有效的方法,但这应该是您代码的工作版本。

【讨论】:

    【解决方案2】:

    作为 RPM 所写内容的补充,我建议您预先分配 f 向量以使其工作得更快一些。只需将f = [1,1] 命令替换为以下命令:

    f = ones(1,nmax);
    

    否则 matlab 必须在每个循环中动态增加向量的大小,从而使函数变慢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 2020-10-22
      相关资源
      最近更新 更多