当我试图以矩阵格式恢复数据时,我对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
现在我有另一组名为B
的矩阵样本,C
是我希望看到的输出
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
非常感谢,伙计!!!
答案 0 :(得分:3)
逻辑索引将仅选择逻辑矩阵为真的矩阵中的元素。显然这意味着它不能保持原始形状,因为元素的数量会发生变化。有几种方法可以做你想做的事情;效率最高的可能是:
C = B;
C(~L) = 0;
这将C
设置为B
,然后将L
为false的矩阵的每个元素设置为零。
答案 1 :(得分:3)
或者您可以从空白矩阵开始并设置所需的元素:
C = NaN(size(B),'like',B); % or zeros(size(B),'like',B)
C(L) = B(L);