考虑到以下规则,我必须通过改变已知矩阵的形式来获得未知矩阵:
H = [-P'|I] %'
G = [I|P]
,其中
例如,如果我们有一个矩阵,
H = [1 1 1 1 0 0;
0 0 1 1 0 1;
1 0 0 1 1 0]
其表格必须更改为
H = [1 1 1 1 0 0;
0 1 1 0 1 0;
1 1 0 0 0 1]
所以
-P' = [1 1 1;
0 1 0;
1 1 0]
,如果是二进制矩阵-P = P
。
因此
G = [1 0 0 1 1 1;
0 1 0 0 1 0;
0 0 1 1 1 0]
我知道如何通过执行基本的行操作在纸上解决它,但还没有弄清楚如何使用MATLAB解决它。
解决给定问题的方法是什么?
答案 0 :(得分:1)
如果-P'
中列的顺序无关紧要,这里有一个使用函数ISMEMBER的解决方案:
>> H = [1 1 1 1 0 0; 0 0 1 1 0 1; 1 0 0 1 1 0]; %# From above
>> pColumns = ~ismember(H',eye(3),'rows') %'# Find indices of columns that
%# are not equal to rows
pColumns = %# of the identity matrix
1
0
1
1
0
0
>> P = -H(:,pColumns)' %'# Find P
P =
-1 0 -1
-1 -1 0
-1 -1 -1
>> G = logical([eye(3) P]) %# Create the binary matrix G
G =
1 0 0 1 0 1
0 1 0 1 1 0
0 0 1 1 1 1
注意:此解决方案适用于H
中的整数或二进制值。如果H
具有浮点值,则在使用ISMEMBER时可能会遇到浮点比较问题(有关此问题的更多讨论,请参阅here和here )。