查看: 3484|回复: 10|关注: 0

[已解决] ezplot函数错误,ingle input must be an existing figure

[复制链接]

新手

5 麦片

财富积分


050


3

主题

8

帖子

0

最佳答案
a=sym('10000');
s=sym('s');
y=sym('y');
n=1;
while (0.1*n)<0.8
    g(n)=solve(20*log10((1/a)*((1+(2*n*0.1*s).^2).^0.5/s.^2.*((1-s.^2).^2+(2*n*0.1*s).^2).^0.5))-y);
    ezplot(g(n),[0,10000],[-100,20]);
    set(gca,'XScale','log','YScale','linear');
    grid on;
    hold on;
    n=n+1;
end

出现Single input must be an existing figure handle or a scalar integer from 1 to 2030832096
Error in ==> ezplot>determineAxes at 534
    figure(fig);
Error in ==> ezplot>ezplot1 at 428
    cax = determineAxes(fig);
Error in ==> ezplot at 148
    [hp,cax] = ezplot1(cax,f{1},vars,labels,args{:});
Error in ==> sym.ezplot at 57
      h = ezplot(f.s,varargin{:});
Error in ==> Untitled at 7
    ezplot(g(n),[0,10000,-100,20]);
这个错误怎么解决

论坛优秀回答者

退役版主

266 麦片

财富积分



12

主题

738

帖子

49

最佳答案
  • 关注者: 13
发表于 2013-3-20 14:11:08 | 显示全部楼层 |此回复为最佳答案
你的g(n)只包含一个变量,所以ezplot的输入只能设置一组输入范围,把你的ezplot改下就好了:
  1. ezplot(g(n),[-20,20]);
复制代码

新手

5 麦片

财富积分


050


4

主题

97

帖子

0

最佳答案
发表于 2013-4-12 18:55:20 | 显示全部楼层
最后一行改成:
             ezplot(g(n),[0,10000,-100,20],1);
                      在运行试试

新手

11 麦片

财富积分


050


1

主题

18

帖子

0

最佳答案
发表于 2014-4-15 17:41:00 | 显示全部楼层
忘阴云 发表于 2013-4-12 18:55
最后一行改成:
             ezplot(g(n),[0,10000,-100,20],1);
                      在运行试试 ...

我的也是类似的问题,报错也是一样的,为什么在后面加一个“1”就没问题了,不就说明了一下这个图是第一个图么,很疑惑。
比如如下程序:
syms x y;
y=sin(x);
ezplot(y,[-20,20,-1,1.5],1);
当把后面的1去掉就不行了,不知道为什么,help里不有这种形式么?

后来又看着help编的,按照f(x,y)=0这种形式输入的时候没有错误。如下代码:
syms x y;
ezplot(y-sin(x),[-20,20,-1.5,1.5]);

新手

11 麦片

财富积分


050


1

主题

18

帖子

0

最佳答案
发表于 2014-4-15 17:42:35 | 显示全部楼层
smallfade 发表于 2013-3-20 14:11
你的g(n)只包含一个变量,所以ezplot的输入只能设置一组输入范围,把你的ezplot改下就好了: ...

这没有解决根本问题喽

论坛优秀回答者

退役版主

266 麦片

财富积分



12

主题

738

帖子

49

最佳答案
  • 关注者: 13
发表于 2014-4-16 11:57:04 | 显示全部楼层
1551303015 发表于 2014-4-15 17:42
这没有解决根本问题喽

你觉得根本问题是什么?我觉得根本问题是ezplot的语法楼主弄错了。。。只有一个变量n,但给了两个取值范围,帮助文档里清楚的写了,两个取值范围需要有两个变量。。。

新手

11 麦片

财富积分


050


1

主题

18

帖子

0

最佳答案
发表于 2014-4-16 16:12:16 | 显示全部楼层
smallfade 发表于 2014-4-16 11:57
你觉得根本问题是什么?我觉得根本问题是ezplot的语法楼主弄错了。。。只有一个变量n,但给了两个取值范 ...

楼主语法肯定是有问题,你的解释也是对的,我只是觉得还是没有解决楼主的需求。猜测,楼主最初的想法应该是想在ezplot里输入一个变量并成功设置两个变量的范围,就想问问大神看如何做到或是能不能做到。

Single input must be an existing figure handle or a scalar integer from 1 to 2030832096
看着这个报错,觉得可能是在哪添加一个数字表示figure handle ,果然参考楼上那位的加个1就做到了,但还是不太清楚原因。

新手

11 麦片

财富积分


050


1

主题

18

帖子

0

最佳答案
发表于 2014-4-16 16:47:26 | 显示全部楼层
ezplot.m里的注释有提到这种用法

%   EZPLOT(f, [a,b], FIG}, EZPLOT(f, [xmin,xmax,ymin,ymax], FIG), or
%   EZPLOT(x,y, [tmin,tmax], FIG) plots the given function over the
%   specified domain in the figure window FIG.

论坛优秀回答者

退役版主

266 麦片

财富积分



12

主题

738

帖子

49

最佳答案
  • 关注者: 13
发表于 2014-4-16 17:13:42 | 显示全部楼层
1551303015 发表于 2014-4-16 16:47
ezplot.m里的注释有提到这种用法

%   EZPLOT(f, [a,b], FIG}, EZPLOT(f, [xmin,xmax,ymin,ymax], FIG), o ...

这种用法是没错,这里错就错在不应该设置两个变量的范围,因为只有一个变量。。。帮助文档里明确写到,而加上figure handle也 应该符合这一说明,所以我认为这可能是个bug。

ezplot(f,[xmin,xmax,ymin,ymax]) plots f over the specified ranges along the abscissa and the ordinate. For this syntax, f needs two variables. If f is univariate, this syntax throws an error.

新手

11 麦片

财富积分


050


1

主题

18

帖子

0

最佳答案
发表于 2014-4-16 20:17:25 | 显示全部楼层
去看了看ezplot.m函数,可惜没怎么看懂
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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