I'm trying to have a plot with a constant line at value y=39. I'm using function fplot() with a constant double as argument. This works for any value (e.g. fplot(38), fplot(40)) except for fplot(39). Anyone has an idea or ad alternative way to get a constant line plot on y=39. Thanks A
The error message while running fplot(39) is the following Error using symvar>isquoted (line 154) Quotes in S are not in pairs.
Error in symvar (line 49) q = isquoted(s);
Error in countvars>symvarMulti (line 17) vars = reshape(symvar(c),1,[]);
Error in countvars>symvarMulti (line 10) vars = cellfun(@symvarMulti, c, 'UniformOutput', false);
Error in countvars (line 5) n = numel(symvarMulti(outer));
Error in fplot>singleFplot (line 225) nvars = countvars(fn);
Error in fplot>@(f)singleFplot(cax,{f},limits,extraOpts,args) (line 193) hObj = cellfun(@(f) singleFplot(cax,{f},limits,extraOpts,args),fn{1},'UniformOutput',false);
Error in fplot>vectorizeFplot (line 193) hObj = cellfun(@(f) singleFplot(cax,{f},limits,extraOpts,args),fn{1},'UniformOutput',false);
Error in fplot (line 163) hObj = vectorizeFplot(cax,fn,limits,extraOpts,args);

 采纳的回答

The fplot function is interpreting ‘39’ as a single quote, its ASCII equivalent:
chr39 = char(39)
chr39 =
'''
Using an anonymous function plots the lines:
fplot(@(x)39+x-x)
The strange appearance avoids several lines of warning messages that would otherwise result.

5 个评论

Thank you, it does work!
Just an addendum to Stars answer:
If you want to plot a constant line at some value, you can also use refline. Thus,
plot(rand(1,100),'o')
% now a constant line, at y == 0.75, slope == 0
hold on
refline(0,0.75)
As always, my pleasure!
I may submit an ‘enhancement request’ to MathWorks to see if they are interested in ‘trapping’ fplot to avoid this problem.
An addendum to John's addendum: if you're using release R2018b or later you can use yline. yline is in MATLAB, while refline is in Statistics and Machine Learning Toolbox.
An addendum to Steven's addendum:
fplot(subs(sym('y'),39)) %does the same
NOTE:
fplot(subs(sym('x'),39)) %won't plot a vertical line
the above will work the same that's why I made a FEX for this purpose

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Get Started with MATLAB 的更多信息

产品

版本

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by