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 ?
採用された回答
"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
2020 年 6 月 7 日
Thank you!!
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
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
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
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
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
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
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
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 Exchange で Matrix Indexing についてさらに検索
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
