利用MATLAB产生有序的二进制矩阵
最近在做学校的一个项目,选择了用非侵入式的方法对家庭用电进行负荷分解。讨论之后决定用进制拟合算法来做,在网上找了半天没有找到产生有序二进制矩阵的轮子,自己写了一个。
主要是利用了matlab中的bitget函数。
function [out]=bin_listg1(nsize)
%有序产生nsize位二进制码
n=2^nsize; %矩阵的行数
w=zeros(n,nsize); %产生结果矩阵
for m = 1:n %二进制有序矩阵的产生
w(m,:) = bitget(m-1,nsize:-1:1);
end
out = w;
end
举例:
a=bin_listg1(4) %产生有序4位二进制矩阵
a =
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
希望帮到大家~~~~~嘻嘻