Значения сумм в матрице, основанные на критериях в других столбцах матрицы [duplicate]

Отказ от ответственности: используйте парсер, если у вас есть опция. Тем не менее ...

Это регулярное выражение, которое я использую (!) Для соответствия тэгам HTML:

<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>

Это может быть не идеально, но я запустил этот код через lot HTML. Обратите внимание, что он даже ловит странные вещи, такие как , которые появляются в Интернете.

Думаю, чтобы он не соответствовал самодостаточным тегам, вы либо захотите использовать Kobi :

<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+(?

или просто объединить, если и если нет.

To downvoters: Это рабочий код из реального продукта. Я сомневаюсь, что кто-либо читает эту страницу, создается впечатление, что социально приемлемо использовать регулярные выражения для HTML.

Предостережение. Я должен заметить, что это регулярное выражение все еще ломается при наличии блоков CD87, комментариев и элементов сценария и стиля. Хорошая новость заключается в том, что вы можете избавиться от тех, кто использует регулярное выражение ...

3
задан ROMANIA_engineer 13 January 2017 в 12:19
поделиться

2 ответа

Вы можете сделать это с помощью комбинации unique и accumarray:

%# find unique rows and their corresponding indices in A
[uniqueRows,~,rowIdx]=unique(A(:,1:2),'rows');

%# for each group of unique rows, sum the values of the third column of A
subtotal = accumarray(rowIdx,A(:,3),[],@sum);

B = [uniqueRows,subtotal];
5
ответ дан Jonas 15 August 2018 в 16:33
поделиться

Вы можете использовать unique, чтобы получить все группы, затем splitapply, чтобы суммировать их

[u, ~, iu] = unique( A(:,1:2), 'rows' ); % Get unique rows & their indices
sums = splitapply( @sum, A(:,3), iu );   % Sum all values according to unique indices

output = [u, sums]
% >> output = 
% output =
%   26     7   124
%   26     8   785
%   27     7   800

. Это поздний ответ, потому что дублированный вопрос просто спросили, поэтому я разместил здесь вместо этого. Обратите внимание, что splitapply был введен в R2015b, так что не было, когда было отправлено решение accumarray.

0
ответ дан Wolfie 15 August 2018 в 16:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: