Matlab 如何将函数返回值存储到列矩阵(倍频程)

Matlab 如何将函数返回值存储到列矩阵(倍频程),matlab,octave,Matlab,Octave,在for循环内调用函数时,如果n是循环迭代次数,则需要将所有返回值存储到列矩阵nx1中: for (i = 1:n) function(arg); end 存储这些值后,我还需要获得前五个值。您可以使用以下代码: res = zeros(n,1); for (i = 1:n) res(i)=function(arg); end 需要在循环之前分配,以确保使用列矩阵而不是行 编辑: 回答最后一个问题:在存储这些值之后,我还需要获得前五个值 您可以使用排序功能来接

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

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

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

您可以使用以下代码:

res = zeros(n,1);
for (i = 1:n)
        res(i)=function(arg);
end
需要在循环之前分配,以确保使用列矩阵而不是行

编辑

回答最后一个问题:在存储这些值之后,我还需要获得前五个值

您可以使用排序功能来接收最佳值:

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

假设您的参数
res
取决于索引
i
,即
结果(i)=您的函数(arg(i))
,您可以使用更紧凑的表达式:

  result = arrayfun(@yourfunction,arg);

.

如果res有两列,比如nx2,我想根据第二列进行排序怎么办?@rakesh.pandit Octave和Matlab有函数sortrows,可以根据整行进行排序。在您的例子中:sortrow(res,2)是答案。默认情况下,sortrow按升序排序。如何更改以降序打印输出?@rakesh.pandit来自matlab文档:如果列元素为正,则matlab软件将矩阵A的相应列按升序排序;如果列的某个元素为负数,MATLAB将按降序对相应的列进行排序。