【发布时间】:2016-07-21 19:48:41
【问题描述】:
在编写某个函数的上下文中,我有以下示例矩阵:
temp =
1 2 0 0 1 0
1 0 0 0 0 0
0 1 0 0 0 1
我想获得一个数组,它的每个元素都表示开始该列的所有非零元素中的元素的数量。如果一列为空,则该元素应对应于下一个非空列。对于矩阵temp,结果为:
result = [1 3 5 5 5 6]
因为第一个非零元素开始第一列,第三个开始第二列,第五个开始第五列,第六个开始第六列。
如何以矢量化方式对任何通用矩阵(可能包含也可能不包含空列)执行此操作?
【问题讨论】:
-
我不会将用零填充的列称为“空”列。一个空列将是例如[[1;3],[],[2;4]]的中间列
-
@Nibor MATLAB 不处理形状不规则的矩阵,例如中间有间隙。在 MATLAB 世界中,一列全为零是空的正确术语。
-
我假设您按列主要顺序计算非零元素?
-
假设您正在计算非零值按列主要顺序发生的位置的索引,您的预期结果是有意义的。为了理解问题,您的问题没有反映这个小但非常关键的细节。如有必要,请验证并更正您的问题。
标签: arrays matlab vectorization sparse-matrix