-1

嘿伙计们,我有一个关于数组中元素计数的快速问题。数组是这样的

B = [1 0 1 0 0 -1; 1 1 1 0 -1 -1; 0 1 -1 0 0 1]

从这个数组我想创建一个数组结构,称为列计数和另一个行计数。我真的很想创建一个数组结构,即使它是一个效率较低的过程。

基本上我想遍历每一列的数组和总计,行这些值出现的总次数。例如对于第一行,我想要以下输出。

Row Counts
-1 0 1

 1 3 2 

提前致谢

4

2 回答 2

4

您可以使用hist函数来执行此操作。

fprintf('Row counts\n');
disp([-1 0 1])
fprintf('\n')
for row = 1:3
    disp(hist(m(i,:),3));
end

产量

Row counts
-1      0      1

 1      3      2
 2      1      3
 1      3      2  
于 2012-10-02T09:14:57.460 回答
3

我不完全理解您的问题,但是如果您想计算 Matlab 数组中某个元素的出现次数,您可以执行以下操作:

% Find value 3 in array A
A =[ 1 4 5 3 3 1 2 4 2 3 ];
count = sum( A == 3 )

比较时A==3,Matlab 将用 0 和 1 填充一个数组,这意味着给定位置A的元素具有您要查找的元素的第二个数组。因此,您可以通过累积数组中的值来计算出现次数A==3

编辑:您可以像这样访问不同的维度:

A = [ 1 2 3 4; 1 2 3 4; 1 2 3 4  ];  % 3rows x 4columns matrix
count1 = sum( A(:,1) == 2 );         % count occurrences in the first column
count2 = sum( A(:,3) == 2 );         % '                      ' third column
count3 = sum( A(2,:) == 2 );         % '                      ' second row

你总是像这样访问给定的行或列。

于 2012-10-02T09:08:07.583 回答