Values not getting printed in csv file

Hi
I have a small issue in printing the values in .csv file
Code.
for
for
for
- some lines of code
fprintf("Temperature = %3.0f\n",temp);
[fid1, msg1] = fopen('file1.csv', 'w' );
fprintf(fid1, 'temperature');
fprintf(fid1, '%3.0f', temp );
fprintf(fid1, '\n');
fclose(fid1);
end
end
end
Output on the command line.
Temperature = -40
Temperature = 0
Temperature = 25
Temperature = 60
Temperature = -40
Temperature = 0
Temperature = 25
Temperature = 60
Temperature = -40
Temperature = 0
Temperature = 25
Temperature = 60
But in the CSV file i have only the last line of the output is printed.
Temperature = 60
I need to print all the values, what can be done ?

 採用された回答

Stephen23
Stephen23 2020 年 6 月 7 日
編集済み: Stephen23 2020 年 6 月 7 日

0 投票

"Values not getting printed in csv file"
Actually they are getting printed, your code just keep overwriting them. The problem is that your code reopens the file on every loop iteration, and each time any existing file contents are simply discarded, so in the end, only the data from the last loop iteration will be in the file.
The usual solution is to open the file before the loops, and close it after the loops:
[fid, msg] = fopen('file1.csv','wt'); % this needs to be BEFORE the loops.
for
for
for
...
fprintf(fid, 'temperature %3.0f\n',temp);
end
end
end
fclose(fid); % this needs to be AFTER the loops
Alternatively you could open the file with the 'a' (append) option, but I would not recommend this as you would anyway need to fopen and fclose the file before the loop to clear any existing file data. The above solution is simpler.

9 件のコメント

Ganesh Kini
Ganesh Kini 2020 年 6 月 7 日
Thank you!!
Ganesh Kini
Ganesh Kini 2020 年 6 月 7 日
Output on the file
Temperature = -40
Temperature = 0
Temperature = 25
Temperature = 60
Temperature = -40
Temperature = 0
Temperature = 25
Temperature = 60
Temperature = -40
Temperature = 0
Temperature = 25
Temperature = 60
But i need the Output as
Temperature: -40 0 25 60 -40 0 25 60 -40 0 25 60
How can i change ?
Stephen23
Stephen23 2020 年 6 月 7 日
[fid, msg] = fopen('file1.csv','wt'); % this needs to be BEFORE the loops.
fprintf(fid,'temperature');
for
for
for
...
fprintf(fid, ' %3.0f\n',temp);
end
end
end
fclose(fid); % this needs to be AFTER the loops
Ganesh Kini
Ganesh Kini 2020 年 6 月 7 日
編集済み: Ganesh Kini 2020 年 6 月 7 日
Thank so much, I got the results
I need one help from you thats when i have
[fid1, msg1] = fopen ( 'file1.csv' , 'wt' );
fprintf (fid1, 'Temperature \ t' );
fprintf ( '\ n' );
fprintf (fid1, 'Value_n \ t' );
fprintf ( '\ n' );
fprintf (fid1, 'Value_p \ t' );
for
for
for
...
fprintf (fid1, '% 3.0f \ n' , temp);
fprintf (fid1, '% 1.1f \ t' , vnw);
fprintf (fid1, '% 1.1f \ t' , vpw);
end
end
end
I get the output
Temperature VNW VPW-40 1.8 -1.5 0 1.2 -1.8 25 1.2 -1.8 60 1.2 -1.5 -40 1.2 -1.8 0 1.8 -1.2 25 0.9 -1.8 60 0.9 -1.8 -40 0.9 -1.8 0 0.9 -1.8 25 0.9 -1.8 60 0.9-1.5
Stephen23
Stephen23 2020 年 6 月 7 日
編集済み: Stephen23 2020 年 6 月 7 日
If you expect each of Temperature, Value_n and Value_p to be printed on their own lines (giving three lines in total), then that is not possible using your nested-loops approach. You would have to collect the data into an array (or three vectors) and fprintf them after the loops.
Or you could simply save your data in columns (which is the standard approach), in which case it is trivial to add a new line for each loop iteration. This would be by far the simplest approach.
Ganesh Kini
Ganesh Kini 2020 年 6 月 7 日
編集済み: Ganesh Kini 2020 年 6 月 7 日
Sorry i could not post the entire thing, since there was net issues
I should not be getting like that
in a single line, but i should get the values in 3 different lines
Temperature 40 and so on ----------
Value_n 1.8 and so on ----------
Value_p -1.5 and so on ----------
If i need to create arrays or columns ( which i am not that sure about) how can i do it? Please let me know about that too. I am really stuck with this
Ganesh Kini
Ganesh Kini 2020 年 6 月 8 日
How can i save the data in columns or in array? Probably in what way.
If you could give me an example. It would be great.
Stephen23
Stephen23 2020 年 6 月 8 日
[fid,msg] = fopen('file1.csv','wt');
assert(fid>=3,msg)
fprintf(fid,'%s\t%s\t%s\n','Temperature','Value_n','Value_p');
for
for
for
...
fprintf(fid,'%3.0f\t%1.1f\t%1.1f\n',temp,vnw,vpw);
end
end
end
fclose(fid);
Ganesh Kini
Ganesh Kini 2020 年 6 月 9 日
編集済み: Ganesh Kini 2020 年 6 月 9 日
Hi,
It does not work as expected
Output
Temperature Value_n Value_p ,-40 0.2 0.1 20 0.1 0.4 120 0.5 4.5
where as i should get the output in such a way
Temperature, -40 20 120
Value_n, 0.2 0.1 0.5
Value_p, 0.1 0.4 4.5
Could you please suggest some changes ?

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

タグ

質問済み:

2020 年 6 月 7 日

編集済み:

2020 年 6 月 9 日

Community Treasure Hunt

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

Start Hunting!

Translated by