matlab随机取矩阵的的一部分
有一个m行,n列的矩阵A。现在随机出入两个数字x,y。需要在A中随机取出x列组成一个新矩阵X,再从剩下n-x列中在随机取出y列组成一个新矩阵Y。这个方法用matlab怎么...
有一个m行,n列的矩阵A。现在随机出入两个数字 x,y。需要在A中随机取出x列组成一个新矩阵X,再从剩下n-x列中在随机取出y列组成一个新矩阵Y。这个方法用matlab怎么实现。急求大神解救。
展开
3个回答
展开全部
问题分析
其实主要就是一个随机取样的问题,可以用
[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.2564
0.0911 0.6444 0.2089 0.4501 0.6620 0.6135
0.5762 0.6476 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.6444 0.2089
0.4587 0.6476 0.7093
0.6619 0.6790 0.2362
Y =
0.1887 0.8329
0.2875 0.2564
0.0911 0.6135
0.5762 0.5822
0.6834 0.5407
展开全部
你这有4个随机,x,y各随机然后在矩阵中取子矩阵又是个随机,这个x列组成的新矩阵是从A中哪一列开始计算,是调着取还是连续。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询