write data in csv document with space delimiter

조회 수: 20 (최근 30일)
Ana Bermejo Jimenez
Ana Bermejo Jimenez 2020년 1월 8일
답변: AR 2025년 2월 11일
Hi,
I have a series of data to be written in a csv file with space delimiter. I have it stored in my workspace as tables, vectors and double
The file I would like to create looks like this:
2
37
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7
11
0 2 3 4 5 6 5 4 2 3
0.1 3 4 5 6 7 8 4 3
0.2 3 4 5 6 7 5 3 3
0.3 3 4 5 2 3 4 5 6
37
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7
11
0 2 3 6 5 6 4 4 3 3
0.1 3 4 5 6 7 8 4 3
0.2 3 3 5 6 7 5 3 3
0.3 2 4 5 5 3 4 5 6
I have stored the data as
a=2;
b=37;
c=11;
d=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7];
e = [0 2 3 4 5 6 5 4 2 ,
0.1 3 4 5 6 7 8 4 3,
0.2 3 4 5 6 7 5 3 3,
0.3 3 4 5 2 3 4 5 6];
f = [0 2 3 6 5 6 4 4 3 ,
0.1 3 4 5 6 7 8 4 3,
0.2 3 3 5 6 7 5 3 3,
0.3 2 4 5 5 3 4 5 6];
e = table(e);
f= table(f);
So far I managed to store the tables concatenated in a csv file as
tt = [e
f];
writetable(tt,'myData.csv','Delimiter',' ')
I would like to store the rest of data as in the format shown above
Is there a way to use something like this for a csv file altering the range for each data to be stored?
writetable(tt,'myData.csv,'WriteVariableNames',false,'Sheet',1,'Range','A1')
thank you in advance

답변 (1개)

AR
AR 2025년 2월 11일
Hi Ana!
CSV files do not support cell ranges like Excel, and as per the documentation for “writetable” function, the Range parameter is not applicable for CSV files. To control data placement, use MATLAB's fprintf” function to manually write each data block in the desired order and format, ensuring correct placement in the file.
Check out the code below to store the data in the specified format.
% Open a file for writing
fileID = fopen('myData.csv', 'w');
% Write data to the file
fprintf(fileID, '%d\n', a);
fprintf(fileID, '%d\n', b);
fprintf(fileID, '%s\n', strjoin(arrayfun(@num2str, d, 'UniformOutput', false), ','));
fprintf(fileID, '%d\n', c);
for i = 1:size(e, 1)
fprintf(fileID, '%s\n', strjoin(arrayfun(@num2str, e(i,:), 'UniformOutput', false), ','));
end
fprintf(fileID, '%d\n', b);
fprintf(fileID, '%s\n', strjoin(arrayfun(@num2str, d, 'UniformOutput', false), ','));
fprintf(fileID, '%d\n', c);
for i = 1:size(f, 1)
fprintf(fileID, '%s\n', strjoin(arrayfun(@num2str, f(i,:), 'UniformOutput', false), ','));
end
% Close the file
fclose(fileID);
Some helpful reference links for the same:
Hope this helps!

카테고리

Help CenterFile Exchange에서 Spreadsheets에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by