Плотностность скалярных векторов произведений - PullRequest
0 голосов
/ 18 февраля 2019

Я создал две функции: frame и t1.Первый (для простоты я заменил определенную матрицу на eye здесь) возвращает три трехмерных вектора.

function [frames] = frame(a1,a2,a3)

      L = a1*a2*a3*eye(3);

      frames(1,:)= L*([1,0,0])';
      frames(2,:)=L*([0,1,0])';
      frames(3,:)=L*([0,0,1])';

end

Вторая функция принимает два скаляра (B, phi1) итри вектора (через матрицу Frame) в качестве входных данных и возвращает еще один:

function [t1] = t1(B,Frame,phi1) 

 ex=Frame(1,:);
 ey=Frame(2,:);
 ez=Frame(3,:); 

 t1 = -sin(phi1)*ex  - cos(B)*cos(phi1)*ey  + cos(phi1)*sin(B)*ez ;

end

Когда я хочу построить или выполнить какие-либо операции с phi1 или B, являющимися векторами, ясно, что я сталкиваюсь с проблемамипотому что такие термины, как sin(phi1)*ex имеют неправильные размеры.Замена их на sin(phi1).*ex также явно неправильна, поскольку ex всегда будет иметь размерность 3, тогда как sin(phi1) будет иметь размерность phi1.

Пример:

phi1=linspace(0,2*pi);
plot(phi1,t1(pi/2,frame(1,1,1),phi1))

.

Error using  * 
Incorrect dimensions for matrix multiplication. Check that the number of columns in the first matrix matches the
number of rows in the second matrix. To perform elementwise multiplication, use '.*'.

Как обойти эту проблему, с которой я столкнулся во многих других случаях?

1 Ответ

0 голосов
/ 18 февраля 2019

Вам просто нужно транспонировать phi1, остальные размеры в порядке.

plot(phi1, t1(pi/2,frame(1,1,1),phi1.'));

output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...