gpt4 book ai didi

matlab - 如何从矩阵中找到一个值

转载 作者:太空宇宙 更新时间:2023-11-03 20:09:56 26 4
gpt4 key购买 nike

0我有矩阵-

A=[1 2 2 3 5 5;
1 5 5 8 8 7;
2 9 9 3 3 5];

现在我需要从矩阵中计算给定矩阵“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

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

b=[1 2 1;
1 0 0;
0 1 2];

Matlab 专家需要您的宝贵建议

最佳答案

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

U = unique(A);
counts = histc(A', U)';
b = counts(:, ismember(U, [1 2 3]));

例子

%// 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));

结果是:

b =
1 2 1
1 0 0
0 1 2

关于matlab - 如何从矩阵中找到一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18229347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com