使用vertcat获取1维数据

时间:2014-04-29 15:59:51

标签: matlab svd

假设我们有以下矩阵

>> X=create_matrix1(B,20);
>> [U E V]=svd(X);

换句话说我们有矩阵,我们打算做这个矩阵的svd,然后很清楚跟随的事情

z=vertcat(U(:,1),U(:,2),U(:,3));

此向量的维度为

[m,n]=size(z)

m =

   825


n =

     1

同时关注事物

z1=vertcat(U(:,1:3));
[m,n]=size(z1)

m =

   275


n =

     3

所以我怎么能解决这个问题?提前谢谢 编辑:我想使用vertcat函数连接第一个d左右矩阵列

2 个答案:

答案 0 :(得分:2)

如果您使用reshape

,则不需要循环
cols = [1:3];
z1 = reshape(U(:,cols), numel(U(:,cols)), 1);

您也可以将此用于非连续列,例如:

cols = [1 2 4 7];

示例:

A = [1 2 3;
     4 5 6;
     7 8 9]

cols = [1:2];
B = reshape(A(:,cols), numel(A(:,cols)), 1)

输出结果为:

A =

   1   2   3
   4   5   6
   7   8   9

B =

   1
   4
   7
   2
   5
   8

答案 1 :(得分:1)

尝试:

startRange = 1;
StopRange = 5;
for ii = startRange:stopRange
    col=U(:,ii)
    newmat = [newmat; col]
end