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怎么实现。急求大神解救。 展开
 我来答
tianxiawulang
2014-01-08 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2658万
展开全部

问题分析

其实主要就是一个随机取样的问题,可以用

[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
cqwsljy
2014-01-08
知道答主
回答量:19
采纳率:0%
帮助的人:9.8万
展开全部
你这有4个随机,x,y各随机然后在矩阵中取子矩阵又是个随机,这个x列组成的新矩阵是从A中哪一列开始计算,是调着取还是连续。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mozata
2014-01-08 · TA获得超过196个赞
知道答主
回答量:91
采纳率:0%
帮助的人:45.3万
展开全部
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));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式