how to write the results from the code into the csv file format?
4 次查看(过去 30 天)
显示 更早的评论
Hi,
Code below is producing the result including dates format and I usually use dlmwrite to write the results in csv format but in this case I am getting an error below: (What should I change so I can save the results)
Error:
Error using sprintf
Unable to convert 'duration' value to 'double'.
Error in dlmwrite (line 161)
str = sprintf(format,m(i,:));
Error in ploting_timeoverUy (line 30)
dlmwrite('Uy_timestamps.csv',[dates,all_Uy])
Code:
close all; clear all; clc;
projectdir = 'F:\3-PIV_Experimental_Data\Outlet_110\Data_LaserSheet_D\Data_PIV\5-AverageFilter_VelocitiesExtration\Point_Velocities\Uy';
files = dir( fullfile(projectdir, '*', '*.csv') );
filenames = fullfile({files.folder}, {files.name});
num_files = length(filenames);
all_Uy = zeros(num_files,1);
all_time = zeros(num_files,1);
for i = 1:numel(files)
filename = filenames{i};
data = readmatrix(filename);
all_Uy(i) = data(1,2);
end
Location = 'F:\3-PIV_Experimental_Data\Outlet_110\Data_LaserSheet_D\Data_PIV\5-AverageFilter_VelocitiesExtration\Point_Velocities\Uy';
files = dir(Location);
dirFlags = [files.isdir];
subFolders = files(dirFlags);
subFolderNames = {subFolders(3:end).name}
for k = 1 : length(subFolderNames)
fprintf('Sub folder #%d = %s\n', k, subFolderNames{k});
end
dates = extractBetween(subFolderNames,"Run ",".");
dates = replace(dates,'-',':');
dates = duration(dates,"InputFormat","hh:mm:ss")
dates=dates'
plot(dates,all_Uy, '-*');
dlmwrite('Uy_timestamps.csv',[dates,all_Uy])
0 个评论
采纳的回答
Cris LaPierre
2022-3-10
6 个评论
Image Analyst
2022-3-10
That's for dlmwrite and csvwrite(). For tables, each column can be different, or for max flexbility, you can use fprintf() like I showed below in my answer.
更多回答(1 个)
Image Analyst
2022-3-10
You could do it manually with fprintf():
fid = fopen(fileName, 'wt');
if fid == -1
warningMessage = sprintf('Error opening file for output:\n%s', fileName);
uiwait(errordlg(warningMessage));
return;
end
for k = 1 : length(all_Uy)
fprintf(fid, '%s, %f\n', dates(k), all_Uy(k));
end
fclose(fid)
I'm not sure about the dates format. You may have to make sure the dates value matches the format specifier. If it's a string, %s will work.
0 个评论
另请参阅
类别
Find more on Text Files in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!