function t = getmy01mat(M,n) % ä¿å为 getmy01mat.m
t = [];
if n>M*(M-1)/2
disp(['M,nçéå¶æ¡ä»¶ï¼' 'n<=M*(M-1)/2']);
return
end
a = [ones(n,1); zeros(M^2-n,1)];
id = randperm(length(a));
b = a(id);
id = find(b==1);
% d = randi(2,n,1)-1;
d = randint(n,1,[0 1]); % Matlab7.1
al = gettri(M,d,id);
bu = gettri(M,~d,id);
t = al+bu';
function tri = gettri(M,d,id)
tri = ones(M,M);
al = tril(tri,-1);
a = d.*id;
a = [a; zeros((M^2-M)/2-length(a),1)];
a(a>0) = 1;
dd = find(al==1);
a = a.*dd;
a(a==0) = [];
al = zeros(M^2,1);
al(a) = 1;
tri = reshape(al,M,M);
%%% åºç¨
M = 5; n = 7;
getmy01mat(M,n)
ans =
0 1 1 0 1
0 0 1 1 0
0 0 0 0 0
1 0 0 0 0
0 1 0 0 0
getmy01mat(M,n)
ans =
0 0 0 0 1
1 0 0 0 0
1 1 0 0 0
1 1 0 0 0
0 1 0 0 0
M = 5; n = 11;
getmy01mat(M,n)
M,nçéå¶æ¡ä»¶ï¼n<=M*(M-1)/2
ans =
[]