作业帮 > 数学 > 作业

我想用MATLAB生成16^16个由0和1组成的16*16的矩阵,要求每一行每一列只能有一个1其他为0,请问怎样生成?谢

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:数学作业 时间:2024/07/14 03:35:16
我想用MATLAB生成16^16个由0和1组成的16*16的矩阵,要求每一行每一列只能有一个1其他为0,请问怎样生成?谢
我想用MATLAB生成16^16个由0和1组成的16*16的矩阵,要求每一行每一列只能有一个1其他为0,请问怎样生成?谢
给你个思路,每一行每一列都只有一个1,那就是说明这个矩阵的行经过行变换之后,一定是一个单位矩阵.就是说你可以先生成一个单位矩阵,然后把行或者列的顺序打乱即可.
算了,还是帮你写好吧.
程序如下:
L=eye(16,16);
L=L(:,randperm(16))
运行后得到一个:
L =
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
验证:
sum(sum(L))
ans =
16
说明总的有16个1,是正确的.