Ошибка при использовании греха.Недостаточно входных аргументов.Почему это так? - PullRequest
0 голосов
/ 24 декабря 2018

Я решаю математическую задачу, и я не могу продолжать делать с ошибкой.

Я перепробовал все константы с sin^2(x), но она такая же.

clear clc

t = 1:0.5:10;
theta = linspace(0,pi,19);

x = 2*sin(theta)

y = sin^2*(theta)*(t/4)

Ошибка при использовании sin Недостаточно входных аргументов.

Ошибка в lab2t114 (строка 9) y = sin ^ 2 * (theta) * (t / 4)

1 Ответ

0 голосов
/ 24 декабря 2018

sin является функцией, поэтому ее следует называть sin(value), которая в данном случае равна sin(theta). Это может помочь рассмотреть возможность записи всего на промежуточных этапах:

temp = sin(theta);
y = temp.^2 ...

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

y = (sin(theta)).^2; 

Наконец, Matlab выполняет матричные и поэлементные операции.Поэлементные операции начинаются с точки '.'В Matlab вы можете посмотреть, например, help .* (поэлементное умножение) и help * матричное вычисление.Для скаляра, такого как 2 в вашем примере, это различие не имеет значения.Однако для вычисления y вам нужны поэлементные операции, поскольку theta и t являются векторами (и в этом случае вы не хотите выполнять матричное умножение - я думаю ...)

t = 1:0.5:10;
theta = linspace(0,pi,19);

x = 2*sin(theta) %times scalar so no .* needed

sin_theta = sin(theta);
sin_theta_squared = sin_theta.^2; %element wise squaring needed since sin_theta is a vector
t_4 = t/4; %divide by scalar, this doesn't need a period
y = sin_theta_squared.*t_4; %element wise multiplication since both variables are arrays

ИЛИ

y = sin(theta).^2.*(t/4);

Также обратите внимание, что эти промежуточные переменные в основном предназначены для целей обучения.Реальный код лучше не писать, так как в этом случае последняя строка намного чище.

РЕДАКТИРОВАТЬ: Краткое примечание, если вы исправили ошибку sin(theta), ноа не ошибки. ^ или. *, вы получите ошибку типа «Ошибка при использовании * Размеры внутренней матрицы должны совпадать».- это, как правило, признак того, что вы забыли использовать поэлементные операторы

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