从两个矩阵中提取相同的列
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)
;
我有一个大小为 (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)
;