24小时热门版块排行榜    

查看: 2364  |  回复: 8

我是柱哥啊

金虫 (正式写手)

[求助] 如何按照矩阵的某一行进行随机排列 已有2人参与

1、给定矩阵,如何随机排列第一行,并且矩阵的每一列对应不变?换句话就是,对矩阵进行随机重排列序,
2、给定矩阵每一行的意义,例如:第一行是工件号,第二行是对应工件的加工时间,第三行是对应工件的尺寸。
针对第一行进行遗传算子的一系列操作,在这个过程中,需要用加工时间与尺寸进行计算。
如何抽出矩阵的第一行进行其他的操作?操作结果形成新的工件号排序,并且工件对应的属性不变。
回复此楼
JustDoIt!
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

asmeng

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
我是柱哥啊: 金币+20, ★★★很有帮助 2014-04-25 11:44:02
1. 第一个问题是不是对矩阵根据第一行进行随机排列?
实际上是各列进行洗牌。用Matlab来做的话,可以用randperm函数。比如,x是三行4列的矩阵,然后按列洗牌:
x=[1,2,3,4;1,2,3,4;1,2,3,4]
ind = randperm(4) %随机排列1到4
y=x(:,ind)%按照ind排列矩阵的各列

2. 第二个问题是不是先取出第一行进行操作,取出矩阵第一行的命令是:x1=x(1,,然后对x1进行运算,生成一个新的序号?(类似于1问中有一个新的ind),然后排列矩阵x吗?

» 本帖已获得的红花(最新10朵)

2楼2014-04-24 22:21:50
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖


感谢参与,应助指数 +1
xzhdty: 金币+1, 谢谢参与 2014-04-27 08:19:48
你只需要将排序后的第一行作为列号指定即可
试试下面的代码,可能更好理解一些
CODE:
a = [rand(1,5);randi(10,1,5);randi(100,1,5)]
b = a(:,randperm(length(a(1,:)),length(a(1,:))))

1.随机排列第一行用randperm(n,n),其中n==第一行的长度,这样不管矩阵维数是多少,生成的结果都不会出问题

2.跟第一个问题一样,第一行是a(1,,操作完后将这个作为列号指定抽取组成新矩阵就行.
例如下面的代码,a = [1,2,3;4,5,6]; b是a的第一行重新排[3,1,2],c是重排后对应的新矩阵
CODE:
>> a = [1:3;4:6]

a =

     1     2     3
     4     5     6

>> b = [3,1,2]

b =

     3     1     2

>> c = a(:,b)

c =

     3     1     2
     6     4     5

» 本帖已获得的红花(最新10朵)

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
3楼2014-04-24 23:23:35
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

我是柱哥啊

金虫 (正式写手)

送红花一朵
引用回帖:
2楼: Originally posted by asmeng at 2014-04-24 22:21:50
1. 第一个问题是不是对矩阵根据第一行进行随机排列?
实际上是各列进行洗牌。用Matlab来做的话,可以用randperm函数。比如,x是三行4列的矩阵,然后按列洗牌:
x=
ind = randperm(4) %随机排列1到4
y=x(:,ind)% ...

第二个问题就是你说的这样子,跟第一个类似,这是在编码中遇到的坎,其实我想再仔细描述下,但是那就又牵扯到遗传算法了,只好这样子
JustDoIt!
4楼2014-04-25 11:05:41
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

我是柱哥啊

金虫 (正式写手)

引用回帖:
2楼: Originally posted by asmeng at 2014-04-24 22:21:50
1. 第一个问题是不是对矩阵根据第一行进行随机排列?
实际上是各列进行洗牌。用Matlab来做的话,可以用randperm函数。比如,x是三行4列的矩阵,然后按列洗牌:
x=
ind = randperm(4) %随机排列1到4
y=x(:,ind)% ...

抽出第一行,是作为序列号来用的,因为最终是根据第二行第三行的值来计算目标,最终根据目标来重新排列序列号。
遗传算法过程,我的是对序列号进行重组交叉等一些列操作,也就是说操作对象是序列号,但是计算目标的时候是根据序列号对应的第二行第三行来得,所以怎么才能保证每个号码对应的二三行值不会混乱?
JustDoIt!
5楼2014-04-25 11:14:15
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

我是柱哥啊

金虫 (正式写手)

送红花一朵
引用回帖:
3楼: Originally posted by libralibra at 2014-04-24 23:23:35
你只需要将排序后的第一行作为列号指定即可
试试下面的代码,可能更好理解一些
a =
b = a(:,randperm(length(a(1,),length(a(1,)))

1.随机排列第一行用randperm(n,n),其中n==第一行的长度,这样不管矩阵维 ...

randi()这个命令我的matlab里边没有,能不能把你的程序文件里的randi.m文件复制我一份?
JustDoIt!
6楼2014-04-25 11:25:16
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

asmeng

金虫 (正式写手)

引用回帖:
5楼: Originally posted by 我是柱哥啊 at 2014-04-25 11:14:15
抽出第一行,是作为序列号来用的,因为最终是根据第二行第三行的值来计算目标,最终根据目标来重新排列序列号。
遗传算法过程,我的是对序列号进行重组交叉等一些列操作,也就是说操作对象是序列号,但是计算目标 ...

只要保证列标号不变就没有问题。比如对矩阵的第二行进行操作,结果记为矩阵y,y(2,i) = f(x(1,i)),即利用x的第一行的各列来计算y的第二行的各列。其中f(x(1,i))是你利用第一行的序号来进行操作的算法函数。
7楼2014-04-25 11:27:07
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

我是柱哥啊

金虫 (正式写手)

引用回帖:
3楼: Originally posted by libralibra at 2014-04-24 23:23:35
你只需要将排序后的第一行作为列号指定即可
试试下面的代码,可能更好理解一些
a =
b = a(:,randperm(length(a(1,),length(a(1,)))

1.随机排列第一行用randperm(n,n),其中n==第一行的长度,这样不管矩阵维 ...

我的matlab中randperm(n)可以显示结果,但是randperm(m,n)显示不来。所以想问下,rangdperm(m,n)这个命令是什么含义?
JustDoIt!
8楼2014-04-25 11:39:14
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

引用回帖:
8楼: Originally posted by 我是柱哥啊 at 2014-04-25 11:39:14
我的matlab中randperm(n)可以显示结果,但是randperm(m,n)显示不来。所以想问下,rangdperm(m,n)这个命令是什么含义?...

randperm(n,n)与randperm(n)的效果是一样的
randi()是内置函数,为了测试方法的,随机生成一些整数,这个跟你的代码应该没有关系
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
9楼2014-04-25 15:39:19
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 我是柱哥啊 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] [复试调剂]西南科技大学国防/材料导师推荐 +3 尖角小荷 2026-03-16 6/300 2026-03-16 23:21 by 尖角小荷
[考研] 东南大学364求调剂 +5 JasonYuiui 2026-03-15 5/250 2026-03-16 21:28 by 木瓜膏
[考研] 085601求调剂 +3 Du.11 2026-03-16 3/150 2026-03-16 20:42 by 无际的草原
[考研] 梁成伟老师课题组欢迎你的加入 +8 一鸭鸭哟 2026-03-14 9/450 2026-03-16 17:35 by 沐霖12138
[考研] 321求调剂 +5 大米饭! 2026-03-15 5/250 2026-03-16 16:33 by houyaoxu
[考研] 070303一志愿西北大学学硕310找调剂 +5 d如愿上岸 2026-03-12 8/400 2026-03-16 15:19 by peike
[考博] 欢迎申博同学联系 +3 天道酬勤2026686 2026-03-10 7/350 2026-03-15 19:03 by 天道酬勤2026686
[基金申请] 现在如何回避去年的某一个专家,不知道名字 +3 zk200107 2026-03-12 6/300 2026-03-14 17:13 by zk200107
[考研] 255求调剂 +3 李嘉慧, 2026-03-12 4/200 2026-03-14 16:58 by 有只狸奴
[考研] 复试调剂 +4 z1z2z3879 2026-03-14 5/250 2026-03-14 16:30 by JourneyLucky
[考研] 290求调剂 +4 @将就将就看 2026-03-10 8/400 2026-03-14 14:23 by 千千运气
[考研] 281求调剂 +9 Koxui 2026-03-12 11/550 2026-03-13 20:50 by Koxui
[考研] 26调剂/材料科学与工程/总分295/求收留 +9 2026调剂侠 2026-03-12 9/450 2026-03-13 20:46 by 18595523086
[考研] 293求调剂 +3 世界首富 2026-03-11 3/150 2026-03-13 16:27 by JourneyLucky
[考研] 310求调剂 +3 【上上签】 2026-03-11 3/150 2026-03-13 16:16 by JourneyLucky
[论文投稿] 投稿问题 5+4 星光灿烂xt 2026-03-12 6/300 2026-03-13 14:17 by god_tian
[考研] 0856化学工程280分求调剂 +4 shenzxsn 2026-03-11 4/200 2026-03-13 11:55 by ymwdoctor
[考研] 420求调剂 +4 莫向外求11 2026-03-10 6/300 2026-03-12 14:41 by ruiyingmiao
[考研] 085600 材料与化工 295 求调剂 +10 dream…… 2026-03-10 12/600 2026-03-12 13:46 by dream……
[考研] 大连大学化学专业研究生调剂 +3 琪久. 2026-03-10 8/400 2026-03-11 10:02 by 琪久.
信息提示
请填处理意见