使用sin时出错。没有足够的输入参数。为什么呢?

时间:2018-12-24 15:40:31

标签: matlab

我正在解决一个数学问题,我无法继续解决该错误。

我用sin^2(x)尝试了所有常量,但还是一样。

清除 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 *θ(t / 4)

1 个答案:

答案 0 :(得分:1)

sin是一个函数,因此应将其称为sin(value),在这种情况下为sin(theta),可能有助于考虑在中间步骤中编写所有内容:

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

完成此操作后,您始终可以将先前计算的行插入到下一行,并插入括号以确保操作顺序不会弄乱事情。请注意,在这种情况下,您实际上并不需要括号。

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

最后,Matlab具有按矩阵和按元素的运算。元素明智的操作以句点“。”开始。在Matlab中,您可以查看例如help .*(元素明智的乘法)和help *矩阵明智的计算。对于标量,例如您的示例中的2,这种区别并不重要。但是,由于thetat是向量(因此在这种情况下,您不打算进行矩阵乘法-我认为...),因此,计算y时需要元素级运算。

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

OR

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

还请注意,这些中间变量主要用于学习目的。最好不要编写这样的实际代码,因为在这种情况下,最后一行要干净得多。

编辑:简要说明,如果您解决了sin(theta)错误,但没有解决。^或。*错误,则会收到诸如“使用*内部矩阵尺寸必须一致的错误”之类的错误。 ”。 -这通常表明您忘记使用按元素运算符