请问,在matlab中,要在m组列向量中随机取n组列向量怎么实现?
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/03/29 05:20:43
请问,在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
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
请问,在matlab中,要在m组列向量中随机取n组列向量怎么实现?
在Matlab 中怎么求一个列向量的逆
请问如何在MATLAB中连接两个行向量(或列向量)?
如何在matlab中生成一个1,2,3,4..n的列向量
MATLAB如何随机生成一个列向量
matlab中怎么将向量随机排列
刘老师,请问普通m*n矩阵中,矩阵中的行向量组的线性相关性和他的列向量组的线性相关性相同吗?
在matlab中实现向量中元素的排列组合
matlab怎么生成列向量
如何把在matlab中把a=0:0.1:pi变成列向量啊?
在matlab中怎么表示向量
怎么证A是m•n矩阵,b是m维列向量,非齐次方程组总有解与A的列向量组和单位向量等价