声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3067|回复: 2

[编程技巧] 关于数组的乱序算法

[复制链接]
发表于 2007-9-23 16:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
今天在工作中遇到一个问题,即需要将一个长度为1*N的序列乱序。
似乎matlab里面并没有这样一个函数,也许由于我太粗心了没有找到,知道的朋友请讲。
在没有既有函数的前提下,我想了一个算法来实现乱序,请大家共同讨论,看看这个算法有无缺陷以及有无更优算法。

设乱序前的序列为 t(1*N):

A = rand(1,N);                           %生成与原序列相等长度的随机序列
[A,index] = sort(A);                    %将随机序列按大小排序
tt = sortrows([index',t']);            %用上面排得的序号将原数据打乱
t_shuffle(:,i) = tt(:,2);                 %提取数据部分

-------------------------------------------------------
回复
分享到:

使用道具 举报

发表于 2007-9-23 20:35 | 显示全部楼层

回复 #1 不化顽石 的帖子

随机置乱,不用这么麻烦吧,看看这个是否可以满足你的要求。
假设要对序列A随机置乱放到B里,那么可以这样写:
N=length(A);
b=randperm(N);
B=A(b);

评分

1

查看全部评分

 楼主| 发表于 2007-9-23 21:13 | 显示全部楼层
多谢花兄,学习了。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-28 09:56 , Processed in 0.062459 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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