fit data to distribution issue

Dear All;
I am trying to fit data to a normal distribution and plot pdf but pdf plot shows several lines , i do not know why it is coming , could you help.
figure is attached

5 个评论

What code did you use?
Thank you Hughes for your cooperation
this is the code i use
input1=input(1:1704,:)
input1= smoothdata(input1,'gaussian',5);
input2=input(1705:3533,:)
input2= smoothdata(input2,'gaussian',5);
input3=input(3534:5250,:)
input3= smoothdata(input2,'gaussian',5);
figure(3);
plot(input1);
title('smoothData');
figure(4);
plot(input2);
title('smoothData');
figure(5);
plot(input3);
title('smoothData');
pd1 = fitdist(input1,'Normal')
pd2 = fitdist(input2,'Normal')
pd3 = fitdist(input3,'Normal')
y1 = pdf(pd1,input1);
y2 = pdf(pd2,input2);
y3 = pdf(pd3,input3);
plot(input1,y1,'LineWidth',2)
hold on
plot(input2,y2,'LineWidth',2)
plot(input3,y3,'LineWidth',2)
Can you provide the data also so we can replicate what you have done, ie the variable input
I extracted the related data part
Many thanks

请先登录,再进行评论。

回答(1 个)

Hi,
From the code and data provided on question and comment, I see that the output you are plotting is not in sorted order. So basically, what you are currently seeing is the connected line between all the data points which is going in the direction of how the points are arranged in the input vector. For seeing a continuous line either you can sort both the input1 and y1 before plotting (And similarly for other two pairs) or instead of line you can plot circles for every datapoint. This will give correct visualization. Both approaches can be done like below:
% Sorting the input1 and y1 simultaneously
[input1sorted, ind] = sort(input1);
y1sorted = y1(ind);
plot(input1sorted, y1sorted,'LineWidth',2);
% plotting only dot for each datapoints
plot(input1,y1,'o');

类别

帮助中心File Exchange 中查找有关 Creating, Deleting, and Querying Graphics Objects 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by