Hello,
I have been trying to figure out how to add a second scaled y-axis ( or even just a second y-axis) and even after reading through several Matlab forum posts it still does not work. I was wondering if anyone out there, would help me figure out what I am doing wrong.
My personal thoughts on what is wrong is something to do with the fact that I am trying to plot a curve fit on a set of data and when I tell Matlab to plot according to some x-axis is can not compute my request.
My matlab code so far:
x=[
0
3
6
9
11.5
13.952
];
y=[
0.905
0.900
0.850
0.800
0.788
0
];
v=[
0
3
6
9
11.5
13.952
];
p=[
0
2.5
5.1
8.9
11.493
0
];
f=fit(v,p,'poly5')
c=fit(x,y,'exp2')
figure(1)
plot(f)
figure(2)
x= 0: 1.0 : 15;
plot(f);
hold on;
plot(c)
Where x,y are plots for one curve and v,p (x and y coordinates respectivly) for the other curve
I have tried,
x= 0: 1.0 : 15;
plot(x,f);
hold on;
plot(x,c)
and I tried to follow the example given in https://se.mathworks.com/matlabcentral/answers/23591-examples-of-multiple-plots-on-one-graph ( more specifically the accepted answer given by Chandra Kurniawan) , where a problem similar to what I am facing now was asked and answered.
Any help/thoughts/advice is extremely welcome! Thank you in advance

 採用された回答

Ameer Hamza
Ameer Hamza 2018 年 5 月 25 日

0 投票

You can use yyaxis to plot 2 axis
x = 0:0.1:10;
yyaxis left
plot(x, x);
yyaxis right
plot(x, sin(x))

6 件のコメント

Christian Nørgaard
Christian Nørgaard 2018 年 5 月 25 日
編集済み: Christian Nørgaard 2018 年 5 月 25 日
By looking at your example I have changed my code to the following,
f=fit(v,p,'poly5')
c=fit(x,y,'exp2');
x = 0:1:15;
yyaxis left
plot(x,c);
yyaxis right
plot(x, f)
I get an error for some reason and I am not entirely sure what. The following error message was produced,
Error using cfit/plot>parseinput (line 335)
Must specify both XDATA and YDATA.
Error in cfit/plot (line 42)
[S1,xdata,ydata,S2,outliers,S3,ptypes,conflev] = parseinput(alltypes,varargin);
Error in LEPLOTS1 (line 47)
plot(x,c);
The only thing I can think of that is conflicting with the matlab script is that fact that I ask it to fit a series of points and then use that fit which I have created in a plot.
Ameer Hamza
Ameer Hamza 2018 年 5 月 25 日
If you want to plot cfit object then you cannot specify x. Use it like this
yyaxis left
plot(c);
yyaxis right
plot(f)
If you want to specify your own x then use
yyaxis left
plot(x, c(x));
yyaxis right
plot(x, f(x))
Christian Nørgaard
Christian Nørgaard 2018 年 5 月 25 日
Seems to working, thanks everyone for the help! Only problem now is my cfits as they for some reason decide to take the form of relativly high negative values for no apparent reason. I should be able to figure that one out though.
Ameer Hamza
Ameer Hamza 2018 年 5 月 25 日
Not sure whether it is the problem with the fitting parameters. But you might want to check the range of x being displayed on the axis.
Christian Nørgaard
Christian Nørgaard 2018 年 5 月 25 日
IT WORKED!!! THANKS !!!! 6 hrs of lovely troubleshooting is finally done!!!!!!!! Thanks a lot!
Ameer Hamza
Ameer Hamza 2018 年 5 月 25 日
You are welcome.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeGet Started with Curve Fitting Toolbox についてさらに検索

製品

リリース

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by