查看: 4070|回复: 6|关注: 0

[已解决] 如何生成每行和为1的01矩阵?

[复制链接]

新手

9 麦片

财富积分


050


4

主题

19

帖子

0

最佳答案
想生成一个25*25的矩阵,矩阵元素只有0或1,有三列中有1,其余列都为0,整个矩阵每行和为1,矩阵中所有元素的和为25,并且有1的三列位置要随机,可以通过一个循环来确定三列的位置(循环是另外的函数)
请问这样的矩阵要怎么编写代码?
谢谢~

论坛优秀回答者

中级

600 麦片

财富积分


5001500


3

主题

970

帖子

120

最佳答案
  • 关注者: 26
发表于 2017-7-29 10:45:25 | 显示全部楼层 |此回复为最佳答案
按我的理解,试了一下,你试试
clc;
clear all;
row = 25;
col = 25;

matrix = zeros(row,col);
col_idx = randint(1,3,[1 col]);%会出现1的列索引
row_seq = randperm(row);%生成对应的随机行号

for i = 1:length(row_seq)
   matrix(row_seq(i),col_idx(mod(i,3)+1)) = 1;
end

matrix
sum(sum(matrix))%所有累加和为25
sum(matrix)


新手

9 麦片

财富积分


050


4

主题

19

帖子

0

最佳答案
 楼主| 发表于 2017-7-29 11:05:18 | 显示全部楼层
曦飛 发表于 2017-7-29 10:45
按我的理解,试了一下,你试试
clc;
clear all;

谢谢你呐~可是我复制过去运行报错QAQ然后把randint改成randi之后继续报错,,
版本Mac 2016b

                               
登录/注册后可看大图

新手

9 麦片

财富积分


050


4

主题

19

帖子

0

最佳答案
 楼主| 发表于 2017-7-29 11:12:15 | 显示全部楼层
曦飛 发表于 2017-7-29 10:45
按我的理解,试了一下,你试试
clc;
clear all;

然后是想让他的所有和为25是一个约束不是最后输出一个结果??ヽ(・ω・´メ)

论坛优秀回答者

中级

600 麦片

财富积分


5001500


3

主题

970

帖子

120

最佳答案
  • 关注者: 26
发表于 2017-7-29 11:43:28 | 显示全部楼层
xxxui 发表于 2017-7-29 11:12
然后是想让他的所有和为25是一个约束不是最后输出一个结果??ヽ(・ω・´メ) ...

randi这个函数和之前我的版本的中函数的参数形式可能不一样了,你得看一下。

约束在设计中已经隐含了,最后那个输出,只是验证一下是否满足约束

新手

9 麦片

财富积分


050


4

主题

19

帖子

0

最佳答案
 楼主| 发表于 2017-7-29 13:59:22 | 显示全部楼层
曦飛 发表于 2017-7-29 11:43
randi这个函数和之前我的版本的中函数的参数形式可能不一样了,你得看一下。

约束在设计中已经隐含了, ...

好哒~我再试试,谢谢啦~

新手

5 麦片

财富积分


050


1

主题

5

帖子

0

最佳答案
发表于 2019-9-11 15:49:41 | 显示全部楼层
各位大佬们,如何画出这样的图形啊

状态转移概率矩阵图

状态转移概率矩阵图
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表