当前位置:  开发笔记 > 编程语言 > 正文

迭代矩阵列的最佳方法是什么?

如何解决《迭代矩阵列的最佳方法是什么?》经验,为你挑选了1个好方法。

我想用MATLAB将函数应用于矩阵中的所有列.例如,我希望能够在矩阵的每一列上调用平滑,而不是将矩阵平滑地视为向量(如果调用则这是默认行为smooth(matrix)).

我敢肯定必须有更惯用的方法来做到这一点,但我找不到它,所以我定义了一个map_column函数:

function result = map_column(m, func)
    result = m;
    for col = 1:size(m,2)
        result(:,col) = func(m(:,col));
    end
end

我可以打电话给:

smoothed = map_column(input, @(c) (smooth(c, 9)));

这段代码有什么问题吗?我怎么能改进它?



1> Tim Whitcomb..:

MATLAB"for"语句实际上循环遍历任何提供的列 - 通常,这只会产生一系列标量,因为传入的向量(如上例所示)是行向量.这意味着您可以像这样重写上面的代码:

function result = map_column(m, func)
    result = [];
    for m_col = m
      result = horzcat(result, func(m_col));
    end

如果func没有返回列向量,那么你可以添加类似的东西

f = func(m_col);
result = horzcat(result, f(:));

强迫它进入一个列.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有