How can I create a data table and export it as an excel file?

9 ビュー (過去 30 日間)
bobby
bobby 2021 年 10 月 4 日
コメント済み: bobby 2021 年 10 月 10 日
Hello all!
I am having trouble converting my data into a table and exporting it as an excel file.
Essentially, I am importing multiple .mat matrix files, and I am turning that data into basic statistical observations for each file. I wish to tabulate all of these values from a for loop.
Here is the simplified code I have so far
datadirectory = '/Users/name/Desktop/data/';
import = dir(fullfile(datadirectory,'*.mat'));
save_directory = uigetdir('/Users/name/Desktop/data/');
for i = 1:length(import)
Data = load(fullfile(import(i).folder, import(i).name));
histogram(Data.importData)
mean = mean(Data.importData, 'all');
stdev = std(Data.importData, 0, 'all');
median = median(Data.importData, 'all');
mode = halfrange(Data.importData);
fileName = strrep(import(i).name,'.mat','')
end
What I would like to do is make a table of the filename, its respective mean, and its respective standard deviation for each loop. I understand that you would have to use the "table(...)" function, however I am unsure how to convert looped results into it. I tried the following and it doesn't work.
tabData = table( filename(i), mean(:), stdev(:) )
Thank you all for your help!

採用された回答

Kevin Holly
Kevin Holly 2021 年 10 月 5 日
編集済み: Kevin Holly 2021 年 10 月 5 日
Hey bobby! Glad to see you again!
Here you are:
datadirectory = '/Users/name/Desktop/data/';
import = dir(fullfile(datadirectory,'*.mat'));
save_directory = uigetdir('/Users/name/Desktop/data/');
for i = 1:length(import)
Data = load(fullfile(import(i).folder, import(i).name));
histogram(Data.importData)
mean = mean(Data.importData, 'all');
stdev = std(Data.importData, 0, 'all');
median = median(Data.importData, 'all');
mode = halfrange(Data.importData);
fileName = strrep(import(i).name,'.mat','_stats.xls')
%Create Table
tabData = table(mean,stdev,median,mode)
%Write Table to Excel
writetable(tabData,fullfile(save_directory,fileName),'Sheet',1)
end
  6 件のコメント
Kevin Holly
Kevin Holly 2021 年 10 月 6 日
Need to convert the character array to string array. For character arrays, each character is an element in the array. For string arrays, everything within the quotes is one element regardless of how many characters.
You cannot combine character arrays of unequal size together in a column. In this case, you had one that had 60 characters and another that had 62. By converting them to string arrays, the element size of each is 1, similar to that of a cell array.
I had forgotten to update this line. I also removed the file extension from the name.
fileName(i,:) = convertCharsToStrings(strrep(import(i).name,'.mat','')
bobby
bobby 2021 年 10 月 10 日
Awesome! Thank you @Kevin Holly for your help as always!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeTables についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by