Как подсчитать конкретные значения массива в MATLAB? - PullRequest
0 голосов
/ 01 сентября 2018

Вот массив 10х10 arr.

Это arr имеет 100 элементов. И это имеет распределение от -10 до 10, и есть 5 0-значение.

Я сделал этот код, потому что хотел знать число 0.

count = 0;

for i = 1: 10
     for j = 1: 10
         if (arr (i, j) == 0)
             count = count +1;
         end
     end
end

Логически, count должно быть 5 в рабочей области MATLAB. и i и j равны 10.

Однако, когда я запускаю код, count равен 0.

Этот код не может считать числа.

Как мне посчитать цифры?

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

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

arr=[1 2 2;3 3 3;5 0 0;0 0 0]; % example array where 1,2,3 occur 1x,2x,3x and 5=>1x, 0=>5x
[x(:,2),x(:,1)]=hist(arr(:),unique(arr(:))); 

выводит отсортированную категорию как первый столбец, вхождения как 2-й столбец:

x =

     0     5
     1     1
     2     2
     3     3
     5     1
0 голосов
/ 01 сентября 2018

Вы можете просто использовать nnz, чтобы получить количество ненулевых элементов в логическом массиве, поэтому количество элементов в arr со значением 0 равно

count = nnz( arr == 0 );

Пожалуйста, прочитайте Почему 24,0000 не равно 24,0000 в MATLAB? для получения информации о сравнениях чисел с плавающей запятой, вам может потребоваться

tol = 1e-6; % some tolerance on your comparison
count = nnz( abs(arr) < tol ); % abs(arr - x) for values equal to x within +/-tol
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...