Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我必须考虑以下规则,通过更改已知矩阵的形式来获取未知矩阵:
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解决问题。 解决给定问题的方法是什么? 回答: 如果-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时,您可能会遇到浮点比较的问题(有关此问题的更多讨论,请参见此处和此处 )。 更多&回答... |
![]() |
![]() |