2015-10-06 2 views
-2

Интересно, как генерировать матрицу A размера n*(n-1) в MATLAB таким образом, что:Как создать ортонормированную матрицу, ортогональную вектору (1; ...; 1) в MATLAB?

transpose(A) * ones(n,1) = zeros(n-1,1) 

transpose(A) * A = eye(n-1,n-1) 
+0

то, что у вас уже пытался ? –

+0

Я еще ничего не реализовал. –

+3

Мы хотим, чтобы вы что-то пытались попробовать, поскольку это помогает сузить круг вопросов, как реагировать. вы также можете указать, какие части вы знаете и какая часть (и) конкретно неизвестна вам. попробуйте использовать код в качестве примера –

ответ

1

Оператор нуль-пространства именно это делает, он находит матрицу всех ортогональных векторов:

>> null([1;1;1;1]') 
ans = 
-0.50000 -0.50000 -0.50000 
0.83333 -0.16667 -0.16667 
-0.16667 0.83333 -0.16667 
-0.16667 -0.16667 0.83333 
+0

Он работает успешно, и спасибо за вашу услугу. Однако, интересно, можно ли случайным образом выбрать такую ​​матрицу A? То есть, вычисленный А будет отличаться каждый раз, когда я повторяю приведенную выше формулу. –

+0

Вы хотите, чтобы A был случайным? Сразу умножьте его на случайную вращение (= ортонормированную) матрицу размерности (n-1) * (n-1). – SpamBot

+0

Да, это работает. I Правое умножение A со случайной ортонормированной средней сохраняющей матрицей размером (n-1) * (n-1). Спасибо за вашу услугу. –

Смежные вопросы