如何从矩阵中找到一个值

use*_*126 3 matlab

0我有矩阵 -

A=[1 2 2 3 5 5;
   1 5 5 8 8 7;
   2 9 9 3 3 5];
Run Code Online (Sandbox Code Playgroud)

从矩阵我需要计算现在许多非零元素,给定矩阵"A"的每一行中的任何1,多少2和多少3.对于这些,我写了一个代码,如:

    [Ar Ac]=size(A);

    for j=1:Ar 
        for k=1:Ac
            count(:,j)=nnz(A(j,:));
            d(:,j)=sum(A(j,:)== 1); 
            e(:,j)=sum(A(j,:)==2);  
            f(:,j)=sum(A(j,:)==3);          
    end
end
Run Code Online (Sandbox Code Playgroud)

但我需要在循环中写这些,即在这里我手动使用sum(A(j,:)== 1),sum(A(j,:))== 2)和sum(A(j,:))== 3)但是有任何选项我只能写和(A(j,:))= 1:3)并将所有值存储在不同的行中,即结果将像 -

b=[1 2 1;
   1 0 0;
   0 1 2];
Run Code Online (Sandbox Code Playgroud)

Matlab专家需要您宝贵的建议

Eit*_*n T 8

听起来你正在寻找直方图计数:

U = unique(A);
counts = histc(A', U)';
b = counts(:, ismember(U, [1 2 3]));
Run Code Online (Sandbox Code Playgroud)

%// Input matrix and vector of values to count
A = [1 2 2 3 5 5; 1 5 5 8 8 7; 2 9 9 3 3 5];
vals = [1 2 3];

%// Count values
U = unique(A);
counts = histc(A', U)';
b = counts(:, ismember(U, vals));
Run Code Online (Sandbox Code Playgroud)

结果是:

b =
   1   2   1
   1   0   0
   0   1   2
Run Code Online (Sandbox Code Playgroud)