MATLAB去除矩阵中重复数据所在的行
时间: 2024-12-14 10:24:45 浏览: 4
高效使用Matlab:实用技巧与窍门.md
在MATLAB中,要去除矩阵中重复的数据所在的行,你可以使用`unique`函数配合`ismember`函数,或者直接使用`arrayfun`和`isequal`。以下是两种常见方法:
1. **使用 `unique` 和 `ismember`**:
```matlab
% 假设你有一个名为A的矩阵
A = [1 2 3; 2 3 4; 1 2 3]; % 示例矩阵有重复行
% 使用 unique 函数找到唯一值及其索引
[unique_values, idx] = unique(A, 'rows'); % 'rows' 参数表示按行查找重复
% 然后通过 ismember 判断原矩阵哪些行应该保留
[row_to_keep] = isnan(idx); % nan 表示该行在 unique 中没有对应的值,即为唯一的
new_A = A(row_to_keep, :);
```
2. **使用 `arrayfun` 和 `isequal`**:
```matlab
% 如果你想避免创建临时数组,可以这样做
[row_idx, col_idx] = find(ismember(arrayfun(@double, A), arrayfun(@double, A)));
row_to_keep = ~any(isequal(row_idx', row_idx), 2); % 判断是否所有列的值都不一样
new_A = A(row_to_keep, :);
```
在这两个例子中,`new_A`就是去除了重复行后的矩阵。
阅读全文