Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在matlab中绘制两个函数的组合_Matlab_Octave_Matlab Figure - Fatal编程技术网

在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

我无法理解我在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,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
应用于该矩阵中的每个元素。