【问题标题】:how to store return values from a function into column matrix (octave)如何将函数的返回值存储到列矩阵(八度)
【发布时间】:2012-11-07 09:35:30
【问题描述】:

在 for 循环中调用函数时,如果 n 是循环迭代的次数,我需要将所有返回值存储到列矩阵 nx1 中:

for (i = 1:n)
        function(arg);
end

存储这些值后,我还需要获取前五个值。

【问题讨论】:

    标签: matlab octave


    【解决方案1】:

    假设您的论点 res 取决于索引 i,即 result(i) = yourfunction(arg(i)),您可以使用更紧凑的表达式:

      result = arrayfun(@yourfunction,arg);
    

    .

    【讨论】:

      【解决方案2】:

      您可以使用以下代码:

      res = zeros(n,1);
      for (i = 1:n)
              res(i)=function(arg);
      end
      

      需要在循环之前分配以确保您有列矩阵而不是行。

      编辑

      最后一个问题的答案:存储这些值后,我还需要获取前五个值。

      您可以使用排序功能来获得最佳值:

      res=sort(res);
      result=res(1:5)
      

      【讨论】:

      • 如果 res 有两列 nx2 我想根据第二列排序怎么办?
      • @rakesh.pandit Octave 和 Matlab 具有函数 sortrows 可以根据整行进行排序。在您的情况下: sortrow(res, 2) 是答案。
      • 默认情况下 sortrow 按升序排序。要更改什么以按降序打印输出?
      • @rakesh.pandit 来自matlab文档:如果column的元素是正数,MATLAB软件对矩阵A的对应列进行升序排序;如果 column 的元素为负数,MATLAB 会按降序对相应的列进行排序。
      猜你喜欢
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-11
      • 1970-01-01
      • 2021-11-28
      相关资源
      最近更新 更多