matlab随机取矩阵的的一部分
发布网友
发布时间:2022-04-22 12:42
我来回答
共3个回答
热心网友
时间:2023-07-31 03:06
问题分析
其实主要就是一个随机取样的问题,可以用
[idx,idx]=sort(rand(1,n));
得到1-n的随机排列,然后取前x个即为随机抽取(抽出结果的顺序是打乱的,如果需要,可以再用sort排序)。
参考代码
m=5; n=6;
x=4; y=3;
% 测试矩阵
A=rand(m,n)
% idx为随机1:n的随机排列
[idx,idx]=sort(rand(1,n));
X=A(:,idx(1:x))
% 剔除已抽取部分
A(:,idx(1:x))=[];
% idx为随机1:n-x的随机排列
[idx,idx]=sort(rand(1,n-x));
Y=A(:,idx(1:y))
运行结果
A =
0.1887 0.5466 0.6358 0.1194 0.7703 0.8329
0.2875 0.4257 0.9452 0.6073 0.3502 0.25
0.0911 0.44 0.20 0.4501 0.6620 0.6135
0.5762 0.76 0.7093 0.4587 0.4162 0.5822
0.6834 0.6790 0.2362 0.6619 0.8419 0.5407
X =
0.1194 0.5466 0.6358
0.6073 0.4257 0.9452
0.4501 0.44 0.20
0.4587 0.76 0.7093
0.6619 0.6790 0.2362
Y =
0.1887 0.8329
0.2875 0.25
0.0911 0.6135
0.5762 0.5822
0.6834 0.5407
热心网友
时间:2023-07-31 03:06
你这有4个随机,x,y各随机然后在矩阵中取子矩阵又是个随机,这个x列组成的新矩阵是从A中哪一列开始计算,是调着取还是连续。。。
热心网友
时间:2023-07-31 03:06
m = 100;
n = 200;
A = rand(m,n);
x = 3;
y = 6;
inx = randperm(n);
X = A(:,inx(1:x));
Y = A(:,inx(x+1:x+y));