在matlab中绘制两个函数的组合
我无法理解我在matlab中的代码有什么问题:在matlab中绘制两个函数的组合,matlab,octave,matlab-figure,Matlab,Octave,Matlab Figure,我无法理解我在matlab中的代码有什么问题: syms t x=[1 2 3]; g=t*t; f=sin(x); y=compose(g,f); plot(x,y,'o') 我写的这段代码是为了绘制y=sin(x)^2。由于我的计算机中没有matlab,所以在Octave在线编译器上运行它,它在第1行第1列附近给出了错误“syms”未定义 如果有人能帮助解释我在代码中的错误在哪里?看起来您没有安装符号数学工具箱,因此无法使用compose。不过,还是有办法的。请记住,调用compose(f
syms t
x=[1 2 3];
g=t*t;
f=sin(x);
y=compose(g,f);
plot(x,y,'o')
我写的这段代码是为了绘制y=sin(x)^2。由于我的计算机中没有matlab,所以在Octave在线编译器上运行它,它在第1行第1列附近给出了错误“syms”未定义
如果有人能帮助解释我在代码中的错误在哪里?看起来您没有安装符号数学工具箱,因此无法使用compose
。不过,还是有办法的。请记住,调用compose(f,g)
时,两个函数的组合是这样的:我们为f=f(x)
和g=g(y)
返回f(g(y))
您可以做的是以数字方式绘制,而不依赖于syms
。声明一个数字时间向量,它是。。。说。。。从t=0
到t=5
,步骤为0.01
。之后,声明将计算每个函数的函数句柄。函数句柄或匿名函数是小型的一行函数,通常是数学或计算语句,可以接受任何大小的输入,无论是单个值、向量还是矩阵,并将该计算语句应用于输入中的每个值。通过@
符号表示匿名函数,然后在圆括号内指定将构成要计算的语句的变量。在本例中,只有一个变量,我们称之为t
,但它实际上可以是任何变量
因此,我定义了一个函数g
,它对输入中的每个元素执行t^2
。请注意,我必须逐个元素进行操作。如果我们刚刚做了t*t
,我应该提供一个向量还是一个矩阵,这将被解释为矩阵乘法,这不是您想要的。类似地,我们定义了一个匿名函数f
,它生成sin(t)
作为输出
有了这些定义,您真正需要做的就是:
t = 0 : 0.01 : 5;
g = @(t) t.*t;
f = @(t) sin(t);
y = g(f(t)); %// Composition of the two functions (compose(g,f));
plot(t, y, 'o');
简单检查:你有符号数学工具箱吗?@Benoit_11如何检查..在命令窗口中键入'ver',你将看到你的计算机上安装了哪些工具箱八度音阶不再有符号包,因此你没有它。(好吧,从技术上讲,有但是很旧,不推荐,不好用,也不容易从Octave Forge下载)什么是一些容易下载的matlab源代码…谢谢你的方法有效。但是你能解释一下g=@(t)t.*t中的@(t)是什么意思吗@当然。让我添加到我的帖子中,但您实际上是在创建一个匿名函数g
,在其中输入值并计算t^2
。因此,请在函数中输入所需的任何时间值。。。它可以是单个值、矩阵或向量,并将t^2
应用于该矩阵中的每个元素。