MATLABスクリプト解読
clear all;close all;
最初のおまじない
Tkinterのaskdirectoryに相当 uigetfile()
[filename,pathname] = uigetfile('*000.csv', 'Select Oshiro csv file');
ディレクトリ内のファイルの一覧をリストに格納 dir()
Files = dir([pathname,'*000.csv']);
for i = 1:size(Files,1) for文の説明
rootname = regexprep(Files(n).name, '000.csv','');
extension = '.csv';
fprintf('処理中(%g/%g)\n',n,size(Files,1))
disp(['データ名:',rootname])
size(Files,1)の説明 pythonのlen()
sizeがpythonのlen()に相当?matlabのlength()とは何が違う?
size(配列,次元)
size(Files)だとベクトルが返り値になる。
reggexprep() 正規表現を用いたテキストの置換
newStr = regexprep(str,expression,replace)
disp , sprintf , fprintf は何が違ってどう使い分ける?
sprintf or disp - MATLAB Answers - MATLAB Central (mathworks.com)
dispはコマンドウインドウに表示するだけだけどsprintfは変数とかいろんなとこに出力可能(一個目の回答)
変数の値を表示 - MATLAB disp - MathWorks 日本
三つの使いわけ↑dispは%dとかのメタ文字使えない。fprintfは改行\nが必須という違いがある。
disp(['データ名:' , rootname])
中身を配列にしているのは何か意図があるのか?
filename1 = [pathname,rootname,sprintf('00%d',Ich),extension];
ここではsprintfを使って1を01と表示するようにしている。
csvread(filename1, 行オフセット , 列オフセット)
csvreadの2つ目と3つ目の引数の意味
time1 = data1(:,1);
1列目という意味
data1 = data1(:,2:(end-1));
謎。コロン二つで真ん中にカンマ?見たことない
2列目-お尻から1列までという意味
e=d(:,2:3)
2列目から3列目という意味
オブジェクトのインデックスとしてのend
a[1:end]とかb[:,end-1]とか
for文の中のfor文
for i2 = 1:(size(time1,1)-1)
if (time1(i2)<Ioffs_sta)&&(time1(i2+1)>=Ioffs_sta)
Ioffs_sta_id = i2;
elseif (time1(i2)<Ioffs_end)&&(time1(i2+1)>=Ioffs_end)
Ioffs_end_id = i2;
elseif (time1(i2)<Roffs_end)&&(time1(i2+1)>=Roffs_end)
Roffs_end_id = i2;
break
elseif i2 ==(size(time1,1)-1)
disp('エラー1')
end
end
mean(M,1)
行列Mの列ごとの平均を返す。返り値は行ベクトル。
dimension=1に沿ってということらしい、dim1=xだから横に沿ってという思想か?
mean(M,2)
行列Mの行ごとの平均を、返り値列ベクトルとして返す。
size(M)=行の数 , 列の数
の行ベクトルを返す。
offs_val1 = zeros(size(data1));
offs_val4 = zeros(size(data4));
同じサイズの全部ゼロの行列作成。
pythonと違って変数の宣言は省略できないから必要
ちなみにpythonにもnumpyにonesとzerosがある。
offs_val1(:,i) = ones(size(data1,1),1).*offs_data1(1,i);
offs_val1のi列目は
全部1の行ベクトル ドット× offs_dataの一行目のi列目(スカラー)
data1 = data1 - offs_val1;
オフセットする分で全部から引いている
% 時間単位変更(s→us)
time1 = time1.*1000000;
ベクトルとスカラーを掛け合わせるときはなんかこうしている
savename = [pathname,rootname,'.mat'];
pythonで言うos.path.joinは無くて配列みたいに書くだけなのか?
save(savename,'time1','Idata','PVdata','MVdata','Rdata',...
'Idata_ave','PVdata_ave','MVdata_ave','Rdata_ave')
save→変数を保存する関数らしい。...は謎