Scilab:"inconsistent multiplication" 错误消息
Scilab: "inconsistent multiplication" error message
我想用参数化 x=... 、 y=... 和 z=... 绘制曲线(见下文)。我不断收到错误消息,主要是 'inconsistent multiplication'。这是我的代码:
t = linspace(0,4*%pi)
x = (4+sin(63*t))*cos(3*t)
y = (4+sin(63*t))*sin(3*t)
z = cos(3*t)
param3d(x,y,z)
有人可以解释为什么我会收到此错误消息或应该如何更正我的代码吗?我还尝试将 x、y 和 z 定义为函数。
来自documentation of * operator:
Element-wise multiplication is denoted x.*y
. If x
or y
is scalar (1x1 matrix) .*
is the same as *
.
所以,在你的情况下,公式应该写成 (4+sin(63*t)).*cos(3*t)
因为你想按元素相乘两个数组。没有点,星号表示矩阵乘法,由于大小不匹配而失败。
示例:
[1, 2] .* [3, 4] // returns [3, 8]
[1, 2] * [3, 4] // error; one can't multiply a 1-by-2 matrix by another 1-by-2 matrix
也可以写成 3.*t
但是这里。是多余的,因为只有一种方法可以将向量乘以标量。
我想用参数化 x=... 、 y=... 和 z=... 绘制曲线(见下文)。我不断收到错误消息,主要是 'inconsistent multiplication'。这是我的代码:
t = linspace(0,4*%pi)
x = (4+sin(63*t))*cos(3*t)
y = (4+sin(63*t))*sin(3*t)
z = cos(3*t)
param3d(x,y,z)
有人可以解释为什么我会收到此错误消息或应该如何更正我的代码吗?我还尝试将 x、y 和 z 定义为函数。
来自documentation of * operator:
Element-wise multiplication is denoted
x.*y
. Ifx
ory
is scalar (1x1 matrix).*
is the same as*
.
所以,在你的情况下,公式应该写成 (4+sin(63*t)).*cos(3*t)
因为你想按元素相乘两个数组。没有点,星号表示矩阵乘法,由于大小不匹配而失败。
示例:
[1, 2] .* [3, 4] // returns [3, 8]
[1, 2] * [3, 4] // error; one can't multiply a 1-by-2 matrix by another 1-by-2 matrix
也可以写成 3.*t
但是这里。是多余的,因为只有一种方法可以将向量乘以标量。