24小时热门版块排行榜    

查看: 2692  |  回复: 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的回帖
相关版块跳转 我要订阅楼主 我是柱哥啊 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[公派出国] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 GxESXJmptOtQ 2026-09-25 4/200 2026-09-27 06:44 by XgCC8uTcwILl
[考博] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 GxESXJmptOtQ 2026-09-25 4/200 2026-09-27 06:42 by XgCC8uTcwILl
[论文投稿] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 GxESXJmptOtQ 2026-09-25 4/200 2026-09-27 06:39 by XgCC8uTcwILl
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 GxESXJmptOtQ 2026-09-25 3/150 2026-09-27 06:32 by XgCC8uTcwILl
[找工作] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 vQZoDrrm7mUF 2026-09-25 3/150 2026-09-27 06:08 by XgCC8uTcwILl
[公派出国] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 vQZoDrrm7mUF 2026-09-25 3/150 2026-09-27 06:05 by XgCC8uTcwILl
[论文投稿] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +4 vQZoDrrm7mUF 2026-09-25 4/200 2026-09-27 05:56 by XgCC8uTcwILl
[考研] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 vQZoDrrm7mUF 2026-09-25 3/150 2026-09-27 05:56 by XgCC8uTcwILl
[找工作] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +5 vQZoDrrm7mUF 2026-09-25 5/250 2026-09-27 05:53 by XgCC8uTcwILl
[博后之家] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +4 vQZoDrrm7mUF 2026-09-25 4/200 2026-09-27 05:50 by XgCC8uTcwILl
[考研] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 vQZoDrrm7mUF 2026-09-25 5/250 2026-09-27 05:44 by XgCC8uTcwILl
[考博] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 vQZoDrrm7mUF 2026-09-25 3/150 2026-09-27 05:44 by XgCC8uTcwILl
[公派出国] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 vQZoDrrm7mUF 2026-09-25 4/200 2026-09-27 05:44 by XgCC8uTcwILl
[论文投稿] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 vQZoDrrm7mUF 2026-09-25 6/300 2026-09-27 05:42 by XgCC8uTcwILl
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 PGTSwSC3F6nQ 2026-09-24 5/250 2026-09-25 11:19 by yhq9807
[公派出国] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +4 PGTSwSC3F6nQ 2026-09-24 7/350 2026-09-25 11:18 by yhq9807
[硕博家园] 上海工程技术大学 激光智能制造课题组 2027级博士研究生招生 +4 oxidpl 2026-09-20 6/300 2026-09-24 20:40 by oxidpl
[教师之家] 课题组招2027级博士 上海工程技术大学 激光智能制造方向 +4 oxidpl 2026-09-20 6/300 2026-09-24 20:37 by oxidpl
[基金申请] 师弟论文见刊大半年才想起来申请专利,还能抢救一下吗? +4 13108017953 2026-09-21 4/200 2026-09-24 10:06 by kudofaye
[有机交流] 有机合成以后会不会被AI改变?做科研的虫友怎么看 +5 zapen 2026-09-20 8/400 2026-09-23 17:21 by tianxiaoxian
信息提示
请填处理意见