如何在MATLAB中生成一个0 1矩阵(每一行,每一列只有一个1)
答案:2 悬赏:30
解决时间 2021-02-02 09:13
- 提问者网友:南佳人~
- 2021-02-01 11:50
如何在MATLAB中生成一个0 1矩阵(每一行,每一列只有一个1)
最佳答案
- 二级知识专家网友:猎杀温柔
- 2021-02-01 12:20
提供一个方法:
n=10;%可以改成你想要的数
A=zeros(n);
index=randperm(n);%生成随机排列是关键
A((n)*(0:n-1)+index)=1
因为是随机序列,所以每次都不一样,一个结果:
A =
0 0 0 0 0 1 0 0 0 0
0 0 0 0 1 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
1 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 1
用循环实在没必要,n较大的时候严重影响计算速度,不过好编程:
for k=1:n
A(index(k),k)=1
end
效果是一样的,不再啰嗦了。
n=10;%可以改成你想要的数
A=zeros(n);
index=randperm(n);%生成随机排列是关键
A((n)*(0:n-1)+index)=1
因为是随机序列,所以每次都不一样,一个结果:
A =
0 0 0 0 0 1 0 0 0 0
0 0 0 0 1 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
1 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 1
用循环实在没必要,n较大的时候严重影响计算速度,不过好编程:
for k=1:n
A(index(k),k)=1
end
效果是一样的,不再啰嗦了。
全部回答
- 1楼网友:迷人小乖乖
- 2021-02-01 13:11
m=10;%行数
n=15;%列数
a=zeros(m,n); %生成全零矩阵
b=randi(m,[1 n]); %生成n个从1到m的随机整数
ind=sub2ind([m,n],b,1:n);%形成位置
a(ind)=1;%将对应位置变为1
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |