Выражение для суммирования всех записей логических матриц выражений в Matlab? - PullRequest
0 голосов
/ 03 октября 2011

Для суммирования всех элементов в матрице вы обычно делаете

A = sum ( B(:) );

что приятно и коротко. Однако предположим, что у нас есть логическое выражение, подобное этому

B = B == 6 

и мы хотим суммировать элементы всех записей, тогда, кажется, самый умный способ сделать это

A = sum ( sum ( B == 6 ) )

или

B = B == 6;
A = sum( B(:) );

И то и другое безобразно. Так что мне было интересно, есть ли более приятное выражение?

A = sum ( (B == 6)(:) );

Было бы неплохо, но не работает.

Ответы [ 2 ]

3 голосов
/ 03 октября 2011

Так что же такого страшного в простом решении ...

A = sum(B(:) == 6);
0 голосов
/ 04 октября 2011

Не то чтобы я рекомендовал это, но, как было показано ранее , вы можете сделать что-то вроде:

%# A = sum ( (B == 6)(:) )
A = sum( subsref(B == 6, struct('type','()', 'subs',{{':'}})) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...