Calculating average and standard deviation for element correction factor from excel file

I'm importing data from an excel file. I need to take the average of every of every serial number, then calculate the standard deviation percentage of every serial number. Any ideas how i could do that? Thank you

 Respuesta aceptada

Hello, this should do nicely;
% Assuming your spreadsheet file is in the current (working) Matlab folder
optns=detectImportOptions('file.xlsx'); % replace the input "file.xlsx" here with the name of your file and extension
% Set variables to import from your file and import as table
optns.SelectedVariableNames={'SerialNumber','RawCounts'};
T=readtable('file.xlsx',optns); % replace "file.xlsx" with the name of your file
% Determine unique serial numbers and corresponding indices
% The unique serial numbers are stored in "C".
[Z,mX,mY]=unique(T.SerialNumber);
% Compute the mean for each unique serial number
avg=accumarray(mY,T.RawCounts,[],@mean);
% Compute the standard deviation for each unique serial number
stdev=accumarray(mY,T.RawCounts,[],@std);
% To calculate the percentage standard deviation or relative deviation, you
% multiply each standard deviation by 100, and divide it by its
% corresponding mean value in array; "avg".
percentdev=(stdev.*100)./avg;

4 comentarios

That was very helpful, but the avg, stdev, and percentdev don't seem to show in order. Also how can I create a new table that displays 'serial numbers' and 'percentdev'.
Again, thank you for your help.
Hello, add this to the 4th line of code above (comments not included);
[Z,mX,mY]=unique(T.SerialNumber,'stable');
% This will ensure the order in which your serial numbers appear in the spreadsheet program is maintained
% This way the avg, stdev, and percentdev should appear in order
% To create a table of serial numbers and "percentdev"
Tbl=table(Z,percentdev);
% Table column headers
Tbl.Properties.VariableNames={'Serial_Numbers' 'Percent_Std'};
Thank you very much that worked perfectly.
One more question...
What is "C" or by that did you mean "Z"?
% The unique serial numbers are stored in "C".
[Z,mX,mY]=unique(T.SerialNumber);
Hello, oh yes, by "C", i meant "Z". That was a typing error. Thank you

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

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

Start Hunting!

Translated by