Miyazawa’s Pukiwiki
MATLAB Note/ファイル操作
はすでに存在します。
開始行:
-目次
#contents
**ファイル読み込み [#m4bd70ea]
-配列の読み込み
--テキストファイル magik.txt に記述された以下のような値を...
16.0 3.0 2.0 13.0
5.0 10.0 11.0 8.0
9.0 6.0 7.0 12.0
4.0 15.0 14.0 1.0
--カンマ区切りでも、スペース区切りでも、タブ区切りでもか...
--MATLABへの読み込みは以下のようにします。
>> A = load('magik.txt')
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
-文字列の読み込み
--テキストファイル hello.txt に記述された以下のような文字...
HelloWorld1!
HelloWorld2!!
--MATLABへの読み込みは以下のようにします。
#geshi(matlab){{
[names,types,x,y,answer] = textread('hello.txt','%s%s%f%d...
charnames = char(names); %セル配列namesを文...
for count = 1:1:length(charnames(:,1)) %FOR文 1 ~ names...
line = charnames(count, :); %namesのcount行目...
disp(line) %各行の中身を出力
end %FOR文終了
}}
HelloWorld1!
HelloWorld2!!
-Excel(.xls)ファイルの読み込み
--[[参考(初心者によるMATLABメモ):http://sach1o.blog80.f...
**ファイル書き出し [#cebc083e]
-配列Aの中身をCSV形式のテキストで書き出したい場合は、以下...
>> csvwrite('output_filename.txt', A);
--【注意】&color(red){csvwriteの使用時には、有効数字の取...
---特に何も指定しないと、有効数字が5桁までしか出力しない...
例:0.03ずつのフレームの表示
999.93
999.96
999.99
1000
1000
1000
1000.1
1000.1
---有効数字を指定したい場合、関数dlmwriteを使う。関数dlmw...
例:dlmwrite('R00M0036delta.csv',result,'delimiter',',',...
-文字列を書き出したい場合は、以下のようにします。
>> fid = fopen( 'outputFile.txt', 'wt'); %新規書き出し...
>> fprintf(fid,'%s\n', 'HelloWorld!!') %文字列改行モ...
>> fprintf(fid,'%s', 'HelloWorld!!') %文字列モード...
>> fclose(fid); %ファイルをク...
-[[参考 fprintfコマンドでテキストファイルに書き出したデー...
**ヘッダやテキスト付きCSVファイル読み込み [#re93835e]
-[[テキスト、CSV、Excelの各形式で保存された、ヘッダーや列...
-例えば、文字列を含む &ref(phoneTime.csv); を読み込むとし...
--一列目は音素名、二列目・三列目は開始・終了時間
--以下を実行します。
#geshi(matlab){{
file = importdata( 'phoneTime.csv' );
% 音素名が file.textdata に、開始・終了時間が file.data ...
phone = file.textdata;
time = file.data;
% 順番に表示してみる
for count = 1 : 1 : length(phone)
disp(phone(count));
disp(time(count,:));
end
}}
-続いて、一行目にヘッダを含む &ref(phoneTime2.csv); を読...
--以下を実行します。
#geshi(matlab){{
fid = fopen('phoneTime2.csv', 'rt');
% ヘッダ情報(1行目の文字列)を得る
text = textscan(fid, '%s', 1, 'delimiter', '\n');
% データ部(文字列 数値 数値形式で区切り記号は「,」)を...
text = textscan(fid, '%s %f %f', 'delimiter', ',');
fclose(fid);
% 順番に表示してみる
for count = 1 : 1 : length(text{1})
disp(text{1}(count));
disp(text{2}(count));
disp(text{3}(count));
end
}}
-列サイズが大きい場合、Rのrep関数と同じようにrepmat関数が...
-[[MFCC解析のツール/MATLAB Auditory Toolbox, Praat, HTK ...
**グラフの書き出し [#m70813d5]
-[[参考:http://robotics.naist.jp/~min-d/p/index.php?MATLA...
-プロットしたグラフを、そのまま画像ファイルにして出力する...
>> X = [1 2 3 4 5 6 7 8] %プロット用データ列を宣言
X =
1 2 3 4 5 6 7 8
>> plot(X); %プロット(サーバで実行...
>> saveas(gcf, 'plot', 'jpg'); %SAVEAS Figure線図を希望...
--これで、変数Xのプロットグラフが「plot.jpg」として保存さ...
--サーバ上でグラフを作成するときなどに利用できます。
-さらに参考 - [[画像を取り込んで加工して出力する:http://...
**WAVファイル読み込み [#u18c3eb4]
-ファイルから取り込む
--WAVREAD Microsoft WAVE (".wav")サウンドファイルの読み込み
filename = '001.wav'; %読み込むファイ...
[data,Fs,Bits] = wavread(filename);
--dataには音声データ(列表記の振幅)、Fsにはサンプリング...
--音声データとサンプリング周波数については、[[MATLAB勉強...
で詳しく解説しています。
-マイクで取り込む
--WAVRECORD Windows オーディオ入力デバイスを使って、...
Fs = 44100;
time = 3;
data = wavrecord(time*Fs, Fs, 1); %1chでtime秒間...
**WAVファイル書き出し [#t05c8574]
-WAVWRITE Microsoft WAVE (".wav")サウンドファイルへの書...
filename = '002.wav'; %書き出すファイ...
wavwrite(data, Fs, 16, filename); %16 = 量子化ビ...
--量子化ビット数は、デジタルデータを作成するときの値の上...
**XML [#e7ae998d]
-[[xsltを実行する:http://www.mathworks.com/access/helpdes...
終了行:
-目次
#contents
**ファイル読み込み [#m4bd70ea]
-配列の読み込み
--テキストファイル magik.txt に記述された以下のような値を...
16.0 3.0 2.0 13.0
5.0 10.0 11.0 8.0
9.0 6.0 7.0 12.0
4.0 15.0 14.0 1.0
--カンマ区切りでも、スペース区切りでも、タブ区切りでもか...
--MATLABへの読み込みは以下のようにします。
>> A = load('magik.txt')
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
-文字列の読み込み
--テキストファイル hello.txt に記述された以下のような文字...
HelloWorld1!
HelloWorld2!!
--MATLABへの読み込みは以下のようにします。
#geshi(matlab){{
[names,types,x,y,answer] = textread('hello.txt','%s%s%f%d...
charnames = char(names); %セル配列namesを文...
for count = 1:1:length(charnames(:,1)) %FOR文 1 ~ names...
line = charnames(count, :); %namesのcount行目...
disp(line) %各行の中身を出力
end %FOR文終了
}}
HelloWorld1!
HelloWorld2!!
-Excel(.xls)ファイルの読み込み
--[[参考(初心者によるMATLABメモ):http://sach1o.blog80.f...
**ファイル書き出し [#cebc083e]
-配列Aの中身をCSV形式のテキストで書き出したい場合は、以下...
>> csvwrite('output_filename.txt', A);
--【注意】&color(red){csvwriteの使用時には、有効数字の取...
---特に何も指定しないと、有効数字が5桁までしか出力しない...
例:0.03ずつのフレームの表示
999.93
999.96
999.99
1000
1000
1000
1000.1
1000.1
---有効数字を指定したい場合、関数dlmwriteを使う。関数dlmw...
例:dlmwrite('R00M0036delta.csv',result,'delimiter',',',...
-文字列を書き出したい場合は、以下のようにします。
>> fid = fopen( 'outputFile.txt', 'wt'); %新規書き出し...
>> fprintf(fid,'%s\n', 'HelloWorld!!') %文字列改行モ...
>> fprintf(fid,'%s', 'HelloWorld!!') %文字列モード...
>> fclose(fid); %ファイルをク...
-[[参考 fprintfコマンドでテキストファイルに書き出したデー...
**ヘッダやテキスト付きCSVファイル読み込み [#re93835e]
-[[テキスト、CSV、Excelの各形式で保存された、ヘッダーや列...
-例えば、文字列を含む &ref(phoneTime.csv); を読み込むとし...
--一列目は音素名、二列目・三列目は開始・終了時間
--以下を実行します。
#geshi(matlab){{
file = importdata( 'phoneTime.csv' );
% 音素名が file.textdata に、開始・終了時間が file.data ...
phone = file.textdata;
time = file.data;
% 順番に表示してみる
for count = 1 : 1 : length(phone)
disp(phone(count));
disp(time(count,:));
end
}}
-続いて、一行目にヘッダを含む &ref(phoneTime2.csv); を読...
--以下を実行します。
#geshi(matlab){{
fid = fopen('phoneTime2.csv', 'rt');
% ヘッダ情報(1行目の文字列)を得る
text = textscan(fid, '%s', 1, 'delimiter', '\n');
% データ部(文字列 数値 数値形式で区切り記号は「,」)を...
text = textscan(fid, '%s %f %f', 'delimiter', ',');
fclose(fid);
% 順番に表示してみる
for count = 1 : 1 : length(text{1})
disp(text{1}(count));
disp(text{2}(count));
disp(text{3}(count));
end
}}
-列サイズが大きい場合、Rのrep関数と同じようにrepmat関数が...
-[[MFCC解析のツール/MATLAB Auditory Toolbox, Praat, HTK ...
**グラフの書き出し [#m70813d5]
-[[参考:http://robotics.naist.jp/~min-d/p/index.php?MATLA...
-プロットしたグラフを、そのまま画像ファイルにして出力する...
>> X = [1 2 3 4 5 6 7 8] %プロット用データ列を宣言
X =
1 2 3 4 5 6 7 8
>> plot(X); %プロット(サーバで実行...
>> saveas(gcf, 'plot', 'jpg'); %SAVEAS Figure線図を希望...
--これで、変数Xのプロットグラフが「plot.jpg」として保存さ...
--サーバ上でグラフを作成するときなどに利用できます。
-さらに参考 - [[画像を取り込んで加工して出力する:http://...
**WAVファイル読み込み [#u18c3eb4]
-ファイルから取り込む
--WAVREAD Microsoft WAVE (".wav")サウンドファイルの読み込み
filename = '001.wav'; %読み込むファイ...
[data,Fs,Bits] = wavread(filename);
--dataには音声データ(列表記の振幅)、Fsにはサンプリング...
--音声データとサンプリング周波数については、[[MATLAB勉強...
で詳しく解説しています。
-マイクで取り込む
--WAVRECORD Windows オーディオ入力デバイスを使って、...
Fs = 44100;
time = 3;
data = wavrecord(time*Fs, Fs, 1); %1chでtime秒間...
**WAVファイル書き出し [#t05c8574]
-WAVWRITE Microsoft WAVE (".wav")サウンドファイルへの書...
filename = '002.wav'; %書き出すファイ...
wavwrite(data, Fs, 16, filename); %16 = 量子化ビ...
--量子化ビット数は、デジタルデータを作成するときの値の上...
**XML [#e7ae998d]
-[[xsltを実行する:http://www.mathworks.com/access/helpdes...
ページ名:
既存のページ名で編集する