从两个矩阵中提取相同的列

extracting same columns from two matrices

我有一个大小为 (8,1500) 的矩阵 X 和一个大小为 (2,1500) 的矩阵 Y。如何从两个矩阵中提取 100 个随机列?

意思是如果我从矩阵 X 中提取第 20 列,我必须对矩阵 Y 执行相同的操作。

这是您要找的吗?

A = rand( 8,1500 );
B = rand( 2,1500 );

ncol = 100;
cols = ceil( rand( ncol, 1 ) * 1500 );

Ac = zeros( 8, ncol );
Bc = zeros( 2, ncol );
for pos = 1:ncol
    col = cols(pos);
    Ac(:,pos) = A(:,col);
    Bc(:,pos) = B(:,col);
end

Ac(:,1)
A(:,cols(1))

你生成一个列号在 1 到 1500 之间的随机列表。并从 A 和 B 采取相同的位置。

所以你有

X = rand(8,1500); 
Y = rand(2,1500);

您可以创建一个 100 列的随机索引,select 它来自两个矩阵

idx = randperm( 1500, 100 );
Xi = X(:,idx);
Yi = Y(:,idx);

注意我已经使用 randperm 获得 100 unique 列,即没有重复。如果您愿意随机重复,可以将 randperm(1500,100) 替换为 randi(1500,1,100);