2

当我试图以矩阵格式取回数据时,我对 MATLAB 感到沮丧。但每次我只能以单列格式得到答案。我将说明我的问题:

例如,

A = [1 -3 2;5 4 7;-8 1 3];

L = logical(mod(A,2))

L =

     1     1     0
     1     0     1
     0     1     1

现在我有另一组矩阵样本BC是我想看到的输出

B = [100 300 200;500 400 700;800 100 300];

C = B(L)

C =

     100
     500
     300
     100
     700
     300

我不希望它保留为单列。我想知道我能做些什么以C这种矩阵格式返回给我?

C =

     100     300     0
     500     0       700
     0       100     300

非常感谢各位!!!

4

2 回答 2

3

逻辑索引将仅从矩阵中选择逻辑矩阵为真的元素。显然这意味着它不能保持原来的形状,因为元素的数量会改变。有几种方法可以做你想做的事;最有效的可能是:

C = B;
C(~L) = 0;

这设置CB,然后将矩阵中L为假的每个元素设置为零。

于 2014-11-05T03:39:11.563 回答
3

或者您可以从一个空白矩阵开始并设置所需的元素:

C = NaN(size(B),'like',B);  % or zeros(size(B),'like',B)
C(L) = B(L);
于 2014-11-05T05:06:46.617 回答