查看: 546|回复: 7|关注: 0

[已解决] matlabgui用ezplot绘制导数图像产生错误

[复制链接]

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
本帖最后由 Xmegatron 于 2020-4-29 23:34 编辑
  1. fd=get(handles.inputxh1,'string');
  2. axes(handles.axes2);
  3. f2=ezplot(diff(fd));
  4. axis([str2num(Xmin),str2num(Xmax),str2num(Ymin),str2num(Ymax)]);
复制代码

以上是我在按钮的回调函数中输入的代码,但在运行过程中会出现错误使用 ezplot输入必须为字符向量表达式、函数名称、函数句柄或 INLINE 对象。
以及
出错 children1>daoshu_Callback (line 187)
f2=ezplot(diff(fd));
的运行错误。


我想请问下1.问题出现在哪里
                2.后续若对信号进行傅里叶变换等其他操作是否会发生同等错误呢?

谢谢各位大神。






回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

19

主题

2377

帖子

484

最佳答案
  • 关注者: 96
发表于 2020-4-30 09:32:41 | 显示全部楼层 |此回复为最佳答案
Xmegatron 发表于 2020-4-30 09:19
syms x;
f=sin(x);
ezplot(diff(x));

老哥。。。对比一下输入呀。。。

diff函数不同的输入就是差分与求导的区别呀。

想对字符串求导用这样的 diff(str2sym('sin(x)'))
多看帮助文档
说明你的matlab版本
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

19

主题

2377

帖子

484

最佳答案
  • 关注者: 96
发表于 2020-4-30 08:57:20 | 显示全部楼层
看错误,很明显你的 diff(fd) 的结果不是要求,那么你可以输出一下 diff(fd),看看它是啥。。不要用ezplot函数了,使用fplot或者fimplicit

不知道。
多看帮助文档
说明你的matlab版本
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2020-4-30 09:09:44 | 显示全部楼层
深蓝孩童 发表于 2020-4-30 08:57
看错误,很明显你的 diff(fd) 的结果不是要求,那么你可以输出一下 diff(fd),看看它是啥。。不要用ezplot ...

我用的是2019b版本,上边的图是我在新加入的语句f1=diff(fd);前加入断点后查看的结果,fd是我输入的函数没错,为什么f1回变成数组呢,求解。

图片2.png
图片1.png
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

19

主题

2377

帖子

484

最佳答案
  • 关注者: 96
发表于 2020-4-30 09:11:29 | 显示全部楼层
Xmegatron 发表于 2020-4-30 09:09
我用的是2019b版本,上边的图是我在新加入的语句f1=diff(fd);前加入断点后查看的结果,fd是我输入的函数 ...

char的存储方式就是ascii,你用diff求一个差分得到的就是double数组。
多看帮助文档
说明你的matlab版本
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2020-4-30 09:15:26 | 显示全部楼层
深蓝孩童 发表于 2020-4-30 09:11
char的存储方式就是ascii,你用diff求一个差分得到的就是double数组。

diff不也是求导吗?我想把求导后的图像输出要怎么做呢。
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2020-4-30 09:19:19 | 显示全部楼层
深蓝孩童 发表于 2020-4-30 09:11
char的存储方式就是ascii,你用diff求一个差分得到的就是double数组。

syms x;
f=sin(x);
ezplot(diff(x));

我直接编译m文件的时候,是可以输出cos(x)图像的,为什么在gui给了按钮的回调函数就不可以输出了呢?
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2020-4-30 10:51:57 | 显示全部楼层
深蓝孩童 发表于 2020-4-30 09:32
老哥。。。对比一下输入呀。。。

diff函数不同的输入就是差分与求导的区别呀。

ok,做出来了,果然是字符串求导的问题,而且因为我之前输入的函数都是y=sin(x),实际上不用再加上y=,直接输入函数就可以了。谢谢讲解`:loveliness:
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表