matlab - 整理 list

标签 matlab

我相当确定(在 MATLAB 中)应该有一个优雅的解决方案,但我现在想不起来。

我有一个包含 [classIndex, start, end] 的列表,我想将连续的类索引折叠成一个组,如下所示:

这个

 1     1    40
 2    46    53
 2    55    55
 2    57    64
 2    67    67
 3    68    91
 1    94   107

应该变成这样

 1     1    40
 2    46    67
 3    68    91
 1    94   107

我该怎么做?

编辑

没关系,我想我明白了 - 它几乎像 fmarc's solution , 但得到正确的索引

a=[  1     1    40
     2    46    53
     2    55    55
     2    57    64
     2    67    67
     3    68    91
     1    94   107];

d = diff(a(:,1));
startIdx = logical([1;d]);
endIdx   = logical([d;1]);
b = [a(startIdx,1),a(startIdx,2),a(endIdx,3)];

最佳答案

这是一种解决方案:

Ad = find([1; diff(A(:,1))]~=0);
output = A(Ad,:);
output(:,3) = A([Ad(2:end)-1; Ad(end)],3);
clear Ad

关于matlab - 整理 list ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2455050/

相关文章:

matlab - 不同大小的矩阵求和与相乘

matlab - 这种设计模式(动态环绕另一个类)有名称吗?

MatLab - histc 与许多边缘向量

matlab - MATLAB中自动生成函数调用图

matlab - 如何更改 Mathworks 网站的语言?

matlab - 如何对图像应用主成分分析

matlab - 如何在 MATLAB 中计算 99% 的覆盖率?

arrays - 将元胞数组中的 double 插入 MATLAB 中的向量

java - Matlab:如何正确使用 Java ImageIO 类来获取 BufferedIMage

matlab - 在 MATLAB 中绘制不同高度的 3D 轴上的不同 2D 椭圆