Matlab:用不包括自身的行的最小值替换矩阵中的元素

标签 matlab matrix minimum

我想用行中的最小值替换每个元素,而不是元素本身。

例子:输入 In = [1 2 3; 4 5 6; 7 8 9],输出out = [2 1 1; 5 4 4; 8 7 7]

编辑:没有 for 循环,除非计算效率更高

最佳答案

你可以使用一个新函数movmin在 MATLAB R2016a 中引入了移动最小值来解决这个问题:

In = [1 2 3; 4 5 6; 7 8 9];  % Sample data
C = size(In, 2);             % Get the number of columns
out = movmin(In(:, [2:C 1:(C-1)]), [0 C-2], 2, 'Endpoints', 'discard')

out =

     2     1     1
     5     4     4
     8     7     7

上面的工作是首先索引 In 的列以创建矩阵的环绕副本,然后沿着每一行滑动大小为 C-1 的窗口,计算最小值。 'Endpoints', 'discard' 选项会丢弃窗口超出矩阵边缘的结果。

关于Matlab:用不包括自身的行的最小值替换矩阵中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43640022/

相关文章:

c++ - 二叉树的最大值和最小值

python - 各向异性扩散二维图像

matlab - 我可以提高这个Matlab函数的效率吗?

r - 将邻接表转换为 R 中的二进制矩阵

列表字典中的 Python 最小值

integer - 32位有符号整数的最小值?

string - matlab 字符串数组

c# - Matlab builder NE 2012A x64 迁移到 2014B X64

r - 检查矩阵中的至少 2 列是否至少有 3 个值...但它们必须在同一行中(用于成对测试)

Python 矩阵通过一列排序