how to write the results from the code into the csv file format?
조회 수: 2 (최근 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
참고 항목
카테고리
Help Center 및 File Exchange에서 Text Files에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!