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)
, ноа не ошибки. ^ или. *, вы получите ошибку типа «Ошибка при использовании * Размеры внутренней матрицы должны совпадать».- это, как правило, признак того, что вы забыли использовать поэлементные операторы