используйте vertcat для объединения столбцов матрицы, чтобы сделать столбец 1D

давайте рассмотрим следующий бит кода:

[m,n]=size(X);

if m == (n+1)
     Z = vertcat(U(:,1:2:d), V(:,1:2:d));
else
     Z = vertcat(U(:,[1:2:d]));
end

C=Z(:);

То, что я хочу сделать, это объединить сингулярные векторы в один вектор-столбец. Например, я хочу соединить первые d левых и правых сингулярных векторов, но проблема в том, что это создает многомерный столбец, поэтому я написал C=Z(:). Но могу ли я использовать vertcat, чтобы просто создать одномерный вектор-столбец? Заранее спасибо!


person dato datuashvili    schedule 22.04.2014    source источник


Ответы (1)


Похоже, вы только что перевернули индексацию строк и столбцов. U(:,1:2:d) вернет вектор-строку, который вы затем свернете с другим вектором-строкой. Попробуйте это вместо этого:

[m,n]=size(X);

if m == (n+1)
     Z = vertcat(U(1:2:d,:), V(1:2:d,:));
else
     Z = vertcat(U([1:2:d]), :));
end

C=Z(:);

Надеюсь, это поможет.

person Justin Fletcher    schedule 22.04.2014