arrays - 如何在 Matlab 上进行矩阵运算?

标签 arrays matlab matrix

我有一个大小为 m x n 的矩阵 A 和另一个大小为 1 x n 的矩阵 b(在 Matlab 中)。

矩阵 b 由 1 的序列、2 的序列、3 的序列等组成,直到某个值 k。

(例如 b = [1 1 1 2 2 2 3 4 4],n = 9)

我想取 A,对于 A 中的每一行,选择每个段中的最大值,将该子序列中的所有其他内容归零。

因此,例如,对于一行 A = [0 -1 2 3 4 1 3 4 5]) 我会得到

[0 0 2 0 4 0 3 0 5]

如果 A 中有多行 (m > 1),则每一行都应该发生这种情况。

我可以使用 for 循环轻松地做到这一点,但它的工作速度非常慢,因为我在 m 和 n 上循环。

是否有“oneliner”可以在 Matlab 中完成此操作,或者可以快速完成的简单操作?

最佳答案

如果 A 是单行,accumarray可以使用临时函数完成这项工作:

result = accumarray(b(:), A(:) ,[] , @(x) {x==max(x)});
result = vertcat(result{:}).' .* A;

不确定这会有多快,因为它使用单元格。

如果 A 有几行,您可以对这些行使用循环。

关于arrays - 如何在 Matlab 上进行矩阵运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25978836/

相关文章:

javascript - 将数据导入 HTML 文件中的脚本的最简单方法

c - 从 C 文本文件中读取矩阵

java - Java 中的 ConnectFour 程序问题

c - 在不使用结构的情况下添加多项式的数量

c - 函数定义中的指针与数组 : what is the difference between void fct1(int *p) and void fct1(int p[])?

c++ - C冒泡排序: Sorted array loses biggest data piece and is replaced by a memory address

matlab - matlab中的螺旋网格

matlab - MATLAB GUI 中的优化选项卡

java - 通过 MATLAB 读取网站内容

matrix - Jenkins "selective"矩阵构建 [matrix-project-plugin]