Matlab 如何在矩阵中识别相同的数字?

Matlab 如何在矩阵中识别相同的数字?,matlab,matrix,Matlab,Matrix,我有一个二进制矩阵,它看起来像这样: A = [ 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0; 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0; 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1; ] B=[ 1 1 0 1 1 1 0 1 1 0 1 1 0 0 1 1 1]; 但是当我尝试将A放入计算时,我只能使用向量B,这 是计算中矩阵A的行和B如下所示: A = [ 0 0 0 1 1 1 0 0

我有一个二进制矩阵,它看起来像这样:

A = [ 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0;
      1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0;
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1; ]
B=[ 1 1 0 1 1 1 0 1 1 0 1 1 0 0 1 1 1];
但是当我尝试将
A
放入计算时,我只能使用向量
B
,这 是计算中矩阵
A
的行和<代码>B如下所示:

A = [ 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0;
      1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0;
      0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1; ]
B=[ 1 1 0 1 1 1 0 1 1 0 1 1 0 0 1 1 1];

但是我仍然想携带关于哪个“1”来自哪个矩阵行的信息
A
。我想知道有没有办法给vector
B
添加额外的条件,这样vector
B
仍然可以携带来自矩阵
A
的信息,也就是说,假设
A
只包含
0
1
值,那么“1”来自矩阵
的哪一行

[v, B] = max(A,[],1);
B(v==0) = 0;
给予


如果一列中有多个
1
值,则会给出第一个值的行索引。

这是@luis的想法。。我只是在添加一些小改动。我也不知道这是否是OP想要的

从luis的解决方案中创建了一个3D矩阵,这样二进制值和行信息都存储在B中。如果您想要二进制值,请访问切片1。如果需要行信息,请访问切片2

[B(:,:,1), B(:,:,2)] = max(A);
B(1,~all(B,3),:) = 0;

>> B

B(:,:,1) =

 1   1   0   1   1   1   0   1   1   0   1   1   0   0   1   1   1


B(:,:,2) =

 2   2   0   1   1   1   0   2   2   0   1   1   0   0   2   3   3
如果您想要一个特定的二进制值及其行索引,例如,第八个二进制值及其对应的行索引

>> B(:,8,:)

ans(:,:,1) =

 1


ans(:,:,2) =

 2

是的,这是一个好方法,但你误解了我说的话。我说我只能计算向量B,它也是二进制的。我只想向向量B添加附加条件,但向量B本身仍然是二进制的。是否只想从
B
中获取行信息?但那是不可能的!如果您只是将
B
重命名为其他名称,或者将索引指定为附加行,那么可能会这样做?或者可以很容易地将这里的
B
转换为OP问题中的一个。如果在计算中添加附加条件会怎么样?@Angelababy-请编辑您的问题,以便向我们展示预期的输出。目前,我不明白你想达到什么目的。你能提供一个例子输出给你的上述投入吗?要理解你想要的是什么有点困难。