最后一步暂时不知不用循环能否做出来作者: wish_豪 时间: 2012-8-8 15:19
随便编写个 你试试
function panduan=duan(w)
%判断n阶矩阵
[a,b]=size(w);
if a~=b
disp('矩阵不是n阶矩阵');
panduan=0;
return
else
panduan=1;
end
%判断元素和
if sum(w)~=a*(a-1)/2
disp('元素和不符合要求');
panduan=0;
return
else
panduan=1;
end
%判断主对角线元素和是否为0
if sum(diag(w))~=0
disp('主对角线元素和不为0');
panduan=0;
return
else
panduan=1;
end
for i=1:a
for j=1:a
if w(i,j)==0||w(i,j)==1
panduan=1;
else
disp('元素不为0或1');
panduan=0;
return
end
end
end作者: khafi 时间: 2012-8-8 16:33
wish_豪 发表于 2012-8-8 15:19
随便编写个 你试试
function panduan=duan(w)
%判断n阶矩阵
你这个问题估计3,4阶估计没啥问题,阶数一高符合要求的矩阵就会呈几何倍上升的作者: 梦天涯M 时间: 2012-8-11 00:01
function res=fun(n)
k=1;
%n为构造矩阵阶数;
N=n*(n-1)/2; %判断有多少个1;
index0=1:n^2;
for i=1:n^2
if i~=11+n)n^2)
index(k)=index0(i);
k=k+1;
end
end %保证主对角线为0
kind=nchoosek(index,N);
res=zeros(n,n,kind);
for i=1:size(kind,1)
s0=zeros(n);
for j=1:N
s0(kind(i,j))=1;
res(:,:,i)=s0;
end
end
res %矩阵保存变量作者: 梦天涯M 时间: 2012-8-11 00:01
function res=fun(n)
k=1;
%n为构造矩阵阶数;
N=n*(n-1)/2; %判断有多少个1;
index0=1:n^2;
for i=1:n^2
if i~=11+n)n^2)
index(k)=index0(i);
k=k+1;
end
end %保证主对角线为0
kind=nchoosek(index,N);
res=zeros(n,n,kind);
for i=1:size(kind,1)
s0=zeros(n);
for j=1:N
s0(kind(i,j))=1;
res(:,:,i)=s0;
end
end
res %矩阵保存变量作者: 梦天涯M 时间: 2012-8-11 00:02
function res=fun(n)
k=1;
%n为构造矩阵阶数;
N=n*(n-1)/2; %判断有多少个1;
index0=1:n^2;
for i=1:n^2
if i~=11+n)n^2)
index(k)=index0(i);
k=k+1;
end
end %保证主对角线为0
kind=nchoosek(index,N);
res=zeros(n,n,kind);
for i=1:size(kind,1)
s0=zeros(n);
for j=1:N
s0(kind(i,j))=1;
res(:,:,i)=s0;
end
end
res %矩阵保存变量作者: 沉醉北风 时间: 2012-8-11 20:03 作者: 梦天涯M 时间: 2012-8-12 11:26
怎么我上次回答的没有显示?那是正确的啊作者: 梦天涯M 时间: 2012-8-12 11:28
function res=fun(n)
k=1;
%n为构造矩阵阶数;
N=n*(n-1)/2; %判断有多少个1;
index0=1:n^2;
for i=1:n^2
if i~=11+n)n^2)
index(k)=index0(i);
k=k+1;
end
end %保证主对角线为0
kind=nchoosek(index,N);
res=zeros(n,n,kind);
for i=1:size(kind,1)
s0=zeros(n);
for j=1:N
s0(kind(i,j))=1;
res(:,:,i)=s0;
end
end作者: 梦天涯M 时间: 2012-8-12 11:29
哭脸是一个冒号和一个左括号,额,他还自己变哭脸了