# Calculating pdf and cdf for data extracted as a table

19 views (last 30 days)
Ali Awada on 3 Sep 2021
Commented: Ali Awada on 4 Sep 2021
Hello,
I am trying to calculate the cdf and pdf of the wind speed using data extracted from a dat file using the readtable function:
%TF = ismissing(data1,{-999});
data1 = standardizeMissing(data1,-999);
DateStrings = data1(:,1);
time_vector = datetime(DateStrings.Variables,'InputFormat','yyyy-MM-dd HH:mm:SS');
%plot(time_vector,data1.(2))
%Calculate the mean wind speed, its standard deviation and its variance
windspeedmean = nanmean(data1.(2))
windspeedstd = nanstd(data1.(2))
windspeedvar = nanvar(data1.(2))
%Calculate the pdf of wind speed
pdfwindspeed = pdf('Normal',A)
Where I have defined A as data1(:,2) because all the wind speed data are in the 2nd column. The first column is the time in a format of yyyy:MM:dd HH:mm:SS. The plot works just fine but the problem lays with the cdf and pdf calculations
I also tried A as data1.(2) but i get a long list of NaN.
Can anyone suggest a solution with an explanation for this?
##### 2 CommentsShowHide 1 older comment
Ali Awada on 4 Sep 2021
Thanks for reaching out! I managed to sort out the problem

Jeff Miller on 4 Sep 2021
This command
pdfwindspeed = pdf('Normal',A)
returns the pdf of the A values within the standard normal with mu=0 and sigma=1. You might be getting nan's back if your A values come from a normal with a different mu & sigma. You should get more reasonable pdf values with something like this:
est_mu = mean(A);
est_sigma = std(A);
pdfwindspeed = pdf('Normal',A,est_mu,est_sigma);
Ali Awada on 4 Sep 2021
Hey Jeff!
Thanks for explaining the command! You are exactly correct!
As for the other part i managed to get a similar answer yesterday after a lot of trial and error. it is similar to your suggestion
PS: if i insert f in the pd command it will give me an error(too many arguments)
windspeedmean = nanmean(data1.(2))
windspeedstd = nanstd(data1.(2))
d = data1.(1);
f = data1.Value;
%Calculate the pdf of wind speed
e = hour( data1.Time);
pd = makedist('Normal','mu',windspeedmean,'sigma',windspeedstd);
y = pdf(pd,e);