Серия MATLAB Data Processing — устранение повторяющихся данных

MATLAB Data Processing — удаление повторяющихся данных



предисловие

Предполагая, что в матрице 100 * 8 есть повторяющиеся строки, как сохранить неповторяющиеся строки, удалить повторяющиеся строки и сохранить их в исходном порядке расположения?


1. Функция

Используйте уникальную функцию, которая поставляется с MATLAB, ее формат:

[uniqueData, ~, idx] = unique(data, 'rows', 'stable');

Здесь «строки» означает дедупликацию по строкам, а «стабильный» означает сохранение строки, которая появляется в первый раз. uniqueData — это массив ячеек после дедупликации, а idx — это индекс каждой строки в массиве дедупликации, который можно использовать для восстановления исходного массива.

Два, используйте

1. Если все данные числовые, вы можете использовать следующий код:

[uniqueRows, ~, idx] = unique(data,'rows','stable');
uniqueIdx = unique(idx);
uniqueA = data(uniqueIdx,:);

Уникальная функция возвращает уникальные значения в idx, то есть индексы, по которым каждая повторяющаяся строка встречается впервые, и эти индексы в конечном итоге используются для извлечения матрицы в A.
Примечание. Используемые здесь данные являются числовыми.

2. Если данные содержат как числовые, так и текстовые типы, как с этим быть? Давайте сначала импортируем данные, вот два метода.

(1) Используйте функцию readtable для чтения файла Excel, содержащего текстовые данные, а затем удалите повторяющиеся строки.

%% 读取数据
filename = '路径\example.xlsx'; % 输入文件路径和文件名
sheet = 'Sheet1'; % 输入表格名称
data = readtable(filename,'Sheet',sheet);
%% 剔除重复行
[uniqueStrData, ~, idx] = unique(data(:,5:11), 'rows');
% 根据索引取出未重复的行
result = data(unique(idx), :);

(2) Прочитайте файл excel в массив ячеек, а затем удалите повторяющиеся строки.

[a,b,c]=xlsread('路径\名称.xlsx','Sheet'); % 根据自己的文件名进行调整
% 注:a是Excel数字部分(矩阵形式),b为Excel的文本内容(元胞数组形式),c为Excel全部内容(元胞数组形式).

% 将元胞数组转换为字符串型
strData = string(c);

% 使用unique函数去除重复行,这里可以指定需要进行对比的列范围,
% 例如这里指定511列的内容作为比对行内容的基础
[uniqueStrData, ~, idx] = unique(strData(:,5:11), 'rows'); %这里只保存5:11列的内容

% 如果想依据5:11列的内容作为条件,在去除重复行的同时,保存所有列的内容,可使用如下代码
result = strData(unique(idx), :); % 使用这行代码的同时,上行代码必须运行,因为这里引用的上串代码中的idx

3. Заключение

Это содержание этого объяснения. Я был немного занят в последнее время и не обновлял его. Увидимся в следующем выпуске!

Je suppose que tu aimes

Origine blog.csdn.net/xiatiandexia123/article/details/130140049
conseillé
Classement