MATLAB Answers

# How do I print probability distribution object into textbox?

5 views (last 30 days)
I got this information from the fitdist function:
Normal distribution
mu = 9.39507 [9.28818, 9.50196]
sigma = 1.52947 [1.45755, 1.60892]
How can I save it into string and print it in a textbox that is located on a figure plot?
Thank you very much dear users, great month and stay safe.
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Answers (2)

darova on 6 Apr 2021
Here
pd = makedist('Normal');
sig1 = pd.sigma
mu1 = pd.mu
##### 3 CommentsShowHide 2 older comments
Vadim Patrick Nave on 6 Apr 2021
clear all;
%prompt = 'Please enter your file name ';
%name = input(prompt)
T = readtable('results.csv'); %read csv and turn it to a table
a=T; %easier variable
b=a(:,2); %choosing column 2
c=table2array(b); %turning column 2 into an array
d=sqrt((4.*c)/pi); %doing the diameter formula on the area
e=array2table(d); %going back into table format
max=max(d); %find maximum diameter
min=min(d); %find minimum diameter
avg=mean(d); %find average
std=std(d); %find std
a{:, 6} = d; %printing diameter
a{1,7}= max; %printing max diameter
a{1,8}= min; %printing min diameter
a{1,9}= avg; %printing avg diameter
a{1,10}=std; %printing std of the diameters
cdim=ceil(max); %rounding maximum diameter up
cr=linspace(0,cdim,cdim+1); %creating an array of diameters with limit as maximum diameter rounded up
cra=cr.'; %turning array into vertical array
a{1:cdim+1,11}=cra; %printing array into column
a{1,12}=0;
a.Properties.VariableNames = {'Numbers', 'Area','Mean','Min area','Max area','Diameter','Max d ','Min d','Average','Std','Bin Limits','Frequency'};
edges = unique(d); %finding all numbers needed to count from (diameter)
tg=ceil(edges); %rounding up all the diameters to make spaces between lower and higher
binc = [0:cdim];%borders to count
counts = histcounts(d(:),binc);%count of numbers
res = [counts]; %variable of counts
resv=res.'; %turn it to a column
a{2:cdim+1,12}=resv; %print it into the table
X=a{:,12};%Creating vectors from 12 column
Y=a{:,11};%Creating vectors from 11 column
h=height(a);
pd=fitdist(d,'Normal')
figure
subplot(1,2,1)
ploti=plot(Y,X,'b-o') %plot
grid on %plot
grid minor %plot
xlabel('Diameter (in nm)') %plot
ylabel('Frequency') %plot
x = d;
pd = makedist('Normal');
sig1 = pd.sigma
mu1 = pd.mu
histfit (x);
subplot(1,2,2)
%plot(d,y);
dim = [.2 .5 .3 .3];
str={'fml',num2str(sig1),' Minimum particle diameter= ',num2str(min),' Maximum particle diameter= ',num2str(max),' Total number of particles= ',num2str(h) };
%annotation('textbox',dim,'String',str)
annotation('textbox',dim,'String',str,'FitBoxToText','on');
writetable(a,'results_edited_by_matlab.csv'); %out csv file
saveas(ploti,'ploti.jpg'); %saving figure as jpg file
savefig('ploti'); %saving figure to customize it later

Sign in to comment.

Steven Lord on 6 Apr 2021
Since you're using release R2021a you can use the new formattedDisplayText function.
x = randn(1e6, 1);
pd = fitdist(x,'Normal')
pd =
NormalDistribution Normal distribution mu = -0.000150048 [-0.00210869, 0.00180859] sigma = 0.999324 [0.997941, 1.00071]
S = formattedDisplayText(pd)
S =
" NormalDistribution Normal distribution mu = -0.000150048 [-0.00210869, 0.00180859] sigma = 0.999324 [0.997941, 1.00071] "
##### 2 CommentsShowHide 1 older comment
Vadim Patrick Nave on 8 Apr 2021
Well, unfortunately although the MATLAB version in my computer is 2021, the university have the r2020a and not 2021, so I have to use a different method because a lot of work done there, do you have another idea?

Sign in to comment.

R2021a

### Community Treasure Hunt

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

Start Hunting!