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));

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com