Почему правильное выражение выдает ошибку в MATLAB? - PullRequest
0 голосов
/ 04 мая 2010

Это из этого вопроса

Почему два решения не работают, хотя выглядит для меня очень актуально:

>> t = -pi:0.1:pi;
>> r = ((sin(t)*sqrt(cos(t)))*(sin(t) + (7/5))^(-1)) - 2*sin(t) + 2 ;
??? Error using ==> mtimes
Inner matrix dimensions must agree.

>> t = -pi:0.1:pi;
>> r = ((sin(t).*sqrt(cos(t))).*(sin(t) + (7/5)).^(-1)) - 2*sin(t) + 2 ;
>> plot(r,t)
??? Error using ==> plot
Vectors must be the same lengths.

Что не так с вышесказанным?

1 Ответ

4 голосов
/ 04 мая 2010

Оператор * - это оператор умножения матриц, который требует, чтобы его операнды имели совпадающие размеры внутренней матрицы. Оператор .* является оператором поэлементного умножения, который требует, чтобы его операнды имели одинаковый размер (или один должен быть скалярным), чтобы он мог выполнять умножение на каждую совпадающую пару элементов. См. эту ссылку для более подробной информации.

Кроме того, я не получаю ошибку при построении второго решения. Я просто получаю это предупреждение:

Warning: Imaginary parts of complex X and/or Y arguments ignored
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...