文字列を含めて、CS​Vファイルを作成する​ことができますか?

494 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2010 年 7 月 9 日
編集済み: MathWorks Support Team 2020 年 6 月 22 日
CSVWRITEを使って文字列を含めたCSVファイルを作成していますが、文字列が、一文字づつのカンマ区切りで出力されます。文字列を文字列として、CSVファイルとしてエクスポートする方法を教えてください。
str = {'time','signal1','signal2'}; % 文字列(セル配列)
csvwrite('data1.csv',str) % CSVファイル作成
data1.csvは
t,i,m,e,s,i,g,n,a,l,1,s,i,g,n,a,l,2
となります。

採用された回答

MathWorks Support Team
MathWorks Support Team 2020 年 6 月 22 日
編集済み: MathWorks Support Team 2020 年 6 月 22 日
1. データがセル配列の場合
セル配列でデータを定義している場合、R2019a 以降のバージョンであれば、writecell 関数で文字列を含むデータをファイル出力することが可能です。
>> Vname = {'値1','値2'};
>> data = [{'太郎';'次郎'},num2cell(randperm(5,2).')];
>> C = [Vname;data]
C =
3×2 cell 配列
{'値1' } {'値2'}
{'太郎'} {[ 5]}
{'次郎'} {[ 1]}
>> writecell(C,'mydata1.csv')
>> type mydata1.csv
1,2
太郎,5
次郎,1
R2018b 以前の場合は、fopen / fprintf / fclose などを使用する方法をご検討ください。
詳細は、以下の URL をご覧ください。
2. データがテーブル型の場合
テーブル型でデータを定義している場合は、writetable 関数(R2013b 以降)を使用することが可能です。 なお、R2019b 以降のバージョンであれば、テーブル型において下記のように 非ASCII の変数名を定義することができ、writetable 関数でもそのまま日本語を列ヘッダとして出力可能です。
>> Vname = {'値1','値2'};
>> T = table({'太郎';'次郎'}, randperm(5,2).','VariableNames',Vname);
>> T
T =
2×2 table
1 2
________ ___
{'太郎'} 4
{'次郎'} 3
>> writetable(T,'mydata.csv')
>> type('mydata.csv')
1,2
太郎,4
次郎,3
関連する情報が以下の URL よりご覧いただけます。
・テキスト ファイルへの table のエクスポート
なお、文字列を出力したファイルに、数値データを追記したい場合には、DLMWRITE 関数を’’-append' オプションとともに使用します。
data = rand(5,3);
dlmwrite('data1.csv',data,'-append') % 数値データの追加

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!