Plotting two data sets using the Curve Fitting Tool

121 次查看(过去 30 天)
Hi,
I was wondering is it possible two fit two different data sets in the same plot? The data sets are scatter plots and I have fitted a 4th polynomial through both sets seen attached. I would like to combine the two plots into one. Is there anyway to do so? I tried using the hold function but it did not work.
  2 个评论
dpb
dpb 2020-8-22
编辑:dpb 2020-8-22
No can do. It lets you compare fits of different types for a given data set to help in model selection for the one set, but doesn't have the facility to do multiple datasets at the same time.
Just use the command line tools...if you wanted, you could save the desired fits from the tool (remember to save with names so can recognize which is which) and then just evaluate the fits for the final plot.
I'd look carefully at the statistics for the coefficients, though -- a 4th order to those data would make me suspicious are overfitting.
Elliza Feisol
Elliza Feisol 2020-8-22
Alright, thank you for the recommemdation. I've plotted the data using another code, however I'm having trouble fitting a line through the points. Is there anyway to include the polynomial fit for the two sets of data?
healthydata = scatter(PIVlabLocation1.VarName38,PIVlabLocation1.VarName39);
hold on
unhealthydata = scatter(G0801location1.AVERAGE,G0801location1.VarName21);
hold off
xlabel ('Y*')
ylabel ('U*')
title('Comparison of healthy and unhealthy data')
legend({'healthydata','unhealthydata'},'Location','northeast')

请先登录,再进行评论。

采纳的回答

dpb
dpb 2020-8-22
编辑:dpb 2020-8-24
Well, the old-fashioned way if all you wanted was the coefficients would be to use polyfit and polyval ...but since you have the TB, why not just use fit and get the statistics and builtin behavior automagically?
fithealthy4=fit(PIVlabLocation1.VarName38,PIVlabLocation1.VarName39,'poly4');
fitunhealthy4=fit(G0801location1.AVERAGE,G0801location1.VarName21,'poly4');
hLH=plot(fithealthy4PIVlabLocation1.VarName38,PIVlabLocation1.VarName39);
hold on
hLUH=plot(G0801location1.AVERAGE,G0801location1.VarName21);
set(hLH,{'color'},{'b'}) % healthy blue
set(hLUH,{'color'},{'r'}) % unhealthy red
vals=[{'o';'o'} get([hLH(1) hLUH(1)],{'color'})]; % marker circle, same color as line face color
set([hLH(1) hlUH(1)],{'Marker','MarkerFaceColor'},vals)
xlabel('Y*')
ylabel('U*')
title('Comparison of healthy and unhealthy data')
hLg=legend([hLH(2),hLUH(2)],'Healthy','Unhealthy','Location','northeast');
  8 个评论
Elliza Feisol
Elliza Feisol 2020-8-24
Sorry to bother again, but is there anyway to extend the polyline beyond the data points? I've attached the current figure as well as how I want the graph to look.
dpb
dpb 2020-8-25
编辑:dpb 2020-8-25
Sure -- two ways to approach; both entail adding points to be evaluated over the extended range you want the plot drawn over.
  1. The fit object plot() routine:
newX=[newpoints1 X newpoints2];
hL1=plot(fitObject,newX,[nan(size(newpoints1)) data nan(size(newpoints1))]);
where newpoints1/2 are the locations outside the current range of independent variable you want to add...the X and the observed data vectors have to be same size here so must augment the data vector with NaN to match. As we've noted before, the NaN won't show on the plot.
2. The "traditional" plot() function:
hold on % altho should be already, to remind just in case
newY1=fitObject(newpoints1); % evaluate the fitted curve over
newY2=fitObject(newpoints2]; % the two new ranges wanted to add
hL3=plot(newpoints1,newY1); % add the two new ranges to the existing graph
hL4=plot(newpoints2,newY2); % first point in ranges should be existing line ends
Set linestyle, etc., as desired to match.
What isn't at all clear to me is how you get the second plot -- the range for the first covers the desired x-axis values, but the data points are scaled differently in the second and don't cover that range. Are those completely independent fits of a scaled variable in the second vis a vis the first, I guess?
Also, the first makes sense that the wider bell shape has lower peak and higher tails whereas the second shows the wider (blue) having both wider tails and being (slightly) taller at the peak. That wouldn't seem to normalize correctly to conserve area???
But, I have no idea what any of this is/means, but just looks strange to this dumb ol' nuclear engineer is all :)

请先登录,再进行评论。

更多回答(0 个)

标签

Community Treasure Hunt

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

Start Hunting!

Translated by