永发信息网

请问,在matlab中,要在m组列向量中随机取n组列向量怎么实现?

答案:2  悬赏:10  手机版
解决时间 2021-03-19 18:57
请问,在matlab中,要在m组列向量中随机取n组列向量怎么实现?
最佳答案
楼上的做法不妥。因为
b=ceil(rand(1,n)*10);
所产生的数组不能保证不重复(另外,里面的10应为m)。

实际上这是一个随机抽样问题,我刚好前段时间编过一个,代码附后,供参考。
算法参见Knuth大名鼎鼎的TAOCP, vol.2, pp142。
你调用的时候,假设A为m个列向量组成的矩阵,可取R=1:m,返回的s即为随机抽取的列下标,然后B=A(:,s)。

function s = sampling(R, n)
% 选择抽样,R为记录集合,n为抽取的样本数
% 算法参考:D. E. Knuth, TAOCP, vol.2, pp142,稍有改动

% 开发时测试数据
if ~nargin
R = 1 : 8;
n = 4;
end

N = length(R);
t = 0; % 处理过的记录总数
m = 0; % 已选得的记录数

while 1
U = rand;
if (N-t)*U < n-m
m = m + 1;
s(m) = R(t+1);
% 若已抽取到足够的记录,则算法终止
if m >= n, break, end
end
t = t + 1;
end
全部回答
你的这个题有点意思呀,我编了一个,你可以参考一下。
但我的数据数随意取的,如果不满意,可继续探讨:
clear all;clc;
m=100;n=8;
a=rand(5,m);
b=ceil(rand(1,n)*10);
a(b)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
告诉大家那个拿月石粉的任务该怎么做(≥ω
西部假期国际旅行社地址有知道的么?有点事想
五好小公民征文1000字开头怎么写
重庆到四川泸州火车票价格?
新注册公司九月拿到税务登记证,10月拿到IC卡
关于逃税和增值税发票问题:
轰天炮投影机质量好不好?
康佳五十寸液晶电视开机为什么显示他的康佳都
帮翻译阿
Turn left at the school,then go straight.(
翔宇食杂店在哪里啊,我有事要去这个地方
淘宝客户说自己没收到的货少了,怎么办?
你被pass了 什么意思?
西安在4s店保险理赔修车是不是保险公司直接把
“相如度秦王虽斋,决负约不尝城”中“负”的
推荐资讯
我在网上谈了个男朋友,然后他让我来找他,我
新浪微博帐号被盗了,改密码过程中让我发短信
工行银行卡是指工商银行卡吗
我昨天和今天抹的芙宝烧伤止痛药膏,现在想更
hdmi连接电脑后没有声音可以用音频线吗
选四化学平衡一边倒怎么倒,九举个例子具体分
自来水管漏水 在地面下 该怎么维修
简述企业形象的功能
深圳到云浮怎么坐车去比较方便?
烟台星普工业怎么样
夏家塆地址在什么地方,想过去办事
庆阳志达汽车销售服务有限公司怎么去啊,有知
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?