2015-03-05 2 views
0

У меня следующая ситуация:Оставьте из одного значения в векторе

PA_2 = inv(T2)*[PA_0;1] 

Где PA_0 это 2x1 вектор и PA_2 матрица 3х3. Ответ будет:

[2,14903810567666;-0,722243186433546;1] 

Проблема заключается в том, что я хочу, чтобы оставить из 1. Таким образом, я хочу, чтобы получить вектор 2x1 вместо вектора 3x1.

Что мне нужно изменить/изменить на эту строку: ?

Неужели любой из вас, ребята, знает ответ на мою проблему?

Спасибо за ваше время,

Джастин

+0

Так что @ Just van Til делает любой из нижеприведенных ответов? Если да, пожалуйста, воздержитесь/отметьте это как принято. Благодаря! –

ответ

1

Я не верю, что вы можете сделать это в одной строке (кто-то еще может звонить в на этом), так что я хотел бы сделать это

PA_2 = inv(T2)*[PA_0;1]; 
PA_2 = PA_2(1:2); 

: означает диапазон. левый - ваш индекс начала, а правый - ваш конечный индекс. Вы можете даже использовать это обозначение с помощью матриц. Так, например

a = [1,2,3;4,5,6;7,8,9]; 
a(2:3,1:2) 
%produces 
%ans = 
%  4  5 
%  7  8 

и еще один полезных лакомое, если вы используете более длинные vectosrs/матрицы, вы можете использовать ключевое слово конца. Он автоматически находит последний индекс. Так для примера вы могли бы сделать

PA_2 = inv(T2)*[PA_0;1]; 
PA_2 = PA_2(1:end-1);  %leaves out the last element 

надежду, что помогает

0

Вы можете захотеть взглянуть на this вопрос, который имеет много интересных ответов.

Для вашего приложения функция недокументированных builtin работает отлично:

PA_2 = builtin('_paren', inv(T2)*[PA_0;1], 1:size(T2,1)-1) 

Заметим, что вы не можете использовать ключевое слово end с ним, так что вы должны использовать размер T2, например, чтобы ввести правильный номер элементов.

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