BrownMatlab
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* Matlabを用いたブラウン運動データ解析 [#gfdde69e]
このページでは、Matlabを用いてブラウン運動実験で取得した...
#contents
** Matlabの基本 [#he7fa615]
Matlabではベクトルや行列が基本オブジェクトとなる。例えば、
>>a=[1,2,3,4]
a=
1 2 3 4
と入力すれば、aという変数に(1,2,3,4)という数列が代入され...
列ベクトルを作るには以下のようにする。
>>b=[1;2;3;4]
b=
1
2
3
4
行列は
>> c=[1,2,3,4; 5,6,7,8]
c =
1 2 3 4
5 6 7 8
のように作る。
aの要素を参照するには
>>a(1)
ans = 1
>>a(2:3)
ans = 2 3
のようにする。
*** ヘルプ [#f28ec259]
Matlabでは、
>>doc command_name
と打ち込むと、command_nameに関するヘルプが表示される。以...
*** スクリプトファイルとセル [#p59095c4]
Matlabでは、上記のようにコマンドプロンプトからコマンドを...
%% Cell 1
a=1;
b=2*a;
%% Cell 2
c=sin(3);
というようなファイルがある場合、行頭の%%から、次のまでが...
セルを用いると、各セルだけを実行させることが可能になる。M...
** データのインポート [#n9df54bc]
まずは、解析すべきデータをMatlabに読み込まなければならな...
>>d=dlmread('datafile.dat');
で、データファイルの中身が変数dに読み込まれる。datafile.d...
時間と電圧のデータを取り出す。
>>t=d(:,1); %dの一列目を取り出す(時間データ)
>>v=d(:,2); %dの2列目を取り出す(電圧データ)
データのプロット
>>plot(t,v);
** 平均、分散、自己相関関数 [#w4fd2fc2]
平均と分散はMatlabのmean()とvar()コマンドを使えば良い。
>>mean(v) %平均
>>var(v) %分散
自己相関関数は例えば次のようなスクリプトで計算できる
%% Auto correlation
c=[]; tau=[];
dt=t(2)-t(1); %サンプリング間隔
for n=0:100,
tau(n+1)=dt*n;
c(n+1)=sum(v(1:end-n).*v(n+1:end))/(length(v)-n);
end
plot(tau,c);
** ヒストグラムとフィット [#qa4a4ddf]
vのヒストグラムは、
>>hist(v,30)
でプロットできる。ここで、30はBin数である。vのサンプル数...
ヒストグラムのデータは、
>>[n,x]=hist(v,30);
とすることで、nとxに代入される。xは各Binの中央値、nは度数...
>>plot(x,n);
を実行すればnとxの意味がわかるはずである。
*** データのフィッティング [#hf57445f]
熱雑音の電圧は、一般にガウス分布にしたがう。よって、得ら...
Matlabにおいて、フィッティングを行うにはいくつかの方法が...
%% Histogram
[n,x]=hist(v,30);
p0=[2500,0,2.5]; %Initial parameter
n1=p0(1)*exp(-(x-p0(2)).^2/p0(3)^2); %Function values wi...
%% Test plot
plot(x,n,x,n1);
%% Fitting
testfun=@(p)sum((n-p(1)*exp(-(x-p(2)).^2/p(3)^2)).^2);
popt=fminsearch(testfun,p0);
%% Confirm results
n2=popt(1)*exp(-(x-popt(2)).^2/popt(3)^2);
plot(x,n,x,n2)
ガウス分布は、全体のスケール、平均値、標準偏差、という三...
testfun=@(p)sum((n-p(1)*exp(-(x-p(2)).^2/p(3)^2)).^2);
という部分は、最小化したい関数を定義している。@(p)...とい...
この関数では、xの各点で実測データnと、パラメータpを用いて...
popt=fminsearch(testfun,p0);
この部分では、Matlabのfiminsearch関数を用いてtestfun(p)を...
あとは、求められた最適パラメータpoptの検証を行っているだ...
終了行:
* Matlabを用いたブラウン運動データ解析 [#gfdde69e]
このページでは、Matlabを用いてブラウン運動実験で取得した...
#contents
** Matlabの基本 [#he7fa615]
Matlabではベクトルや行列が基本オブジェクトとなる。例えば、
>>a=[1,2,3,4]
a=
1 2 3 4
と入力すれば、aという変数に(1,2,3,4)という数列が代入され...
列ベクトルを作るには以下のようにする。
>>b=[1;2;3;4]
b=
1
2
3
4
行列は
>> c=[1,2,3,4; 5,6,7,8]
c =
1 2 3 4
5 6 7 8
のように作る。
aの要素を参照するには
>>a(1)
ans = 1
>>a(2:3)
ans = 2 3
のようにする。
*** ヘルプ [#f28ec259]
Matlabでは、
>>doc command_name
と打ち込むと、command_nameに関するヘルプが表示される。以...
*** スクリプトファイルとセル [#p59095c4]
Matlabでは、上記のようにコマンドプロンプトからコマンドを...
%% Cell 1
a=1;
b=2*a;
%% Cell 2
c=sin(3);
というようなファイルがある場合、行頭の%%から、次のまでが...
セルを用いると、各セルだけを実行させることが可能になる。M...
** データのインポート [#n9df54bc]
まずは、解析すべきデータをMatlabに読み込まなければならな...
>>d=dlmread('datafile.dat');
で、データファイルの中身が変数dに読み込まれる。datafile.d...
時間と電圧のデータを取り出す。
>>t=d(:,1); %dの一列目を取り出す(時間データ)
>>v=d(:,2); %dの2列目を取り出す(電圧データ)
データのプロット
>>plot(t,v);
** 平均、分散、自己相関関数 [#w4fd2fc2]
平均と分散はMatlabのmean()とvar()コマンドを使えば良い。
>>mean(v) %平均
>>var(v) %分散
自己相関関数は例えば次のようなスクリプトで計算できる
%% Auto correlation
c=[]; tau=[];
dt=t(2)-t(1); %サンプリング間隔
for n=0:100,
tau(n+1)=dt*n;
c(n+1)=sum(v(1:end-n).*v(n+1:end))/(length(v)-n);
end
plot(tau,c);
** ヒストグラムとフィット [#qa4a4ddf]
vのヒストグラムは、
>>hist(v,30)
でプロットできる。ここで、30はBin数である。vのサンプル数...
ヒストグラムのデータは、
>>[n,x]=hist(v,30);
とすることで、nとxに代入される。xは各Binの中央値、nは度数...
>>plot(x,n);
を実行すればnとxの意味がわかるはずである。
*** データのフィッティング [#hf57445f]
熱雑音の電圧は、一般にガウス分布にしたがう。よって、得ら...
Matlabにおいて、フィッティングを行うにはいくつかの方法が...
%% Histogram
[n,x]=hist(v,30);
p0=[2500,0,2.5]; %Initial parameter
n1=p0(1)*exp(-(x-p0(2)).^2/p0(3)^2); %Function values wi...
%% Test plot
plot(x,n,x,n1);
%% Fitting
testfun=@(p)sum((n-p(1)*exp(-(x-p(2)).^2/p(3)^2)).^2);
popt=fminsearch(testfun,p0);
%% Confirm results
n2=popt(1)*exp(-(x-popt(2)).^2/popt(3)^2);
plot(x,n,x,n2)
ガウス分布は、全体のスケール、平均値、標準偏差、という三...
testfun=@(p)sum((n-p(1)*exp(-(x-p(2)).^2/p(3)^2)).^2);
という部分は、最小化したい関数を定義している。@(p)...とい...
この関数では、xの各点で実測データnと、パラメータpを用いて...
popt=fminsearch(testfun,p0);
この部分では、Matlabのfiminsearch関数を用いてtestfun(p)を...
あとは、求められた最適パラメータpoptの検証を行っているだ...
ページ名: