ベクトルを反転させるのには、wrevという関数が使える。
といっても、中身は非常にシンプル。あえて、関数化する必要もないと思うのだが・・・
y=wrev(x)
x:ベクトル
MATLABのコードって忘れやすい・・・
プログラムのコマンドなんて忘れやすいもの・・・いっそのことネット上に保存してシェアしましょう!!
It's easy to forget command for MATLAB in programming.... Let's share small help for Matlab code with you on the web!!
It's easy to forget command for MATLAB in programming.... Let's share small help for Matlab code with you on the web!!
2010年10月28日木曜日
2010年10月13日水曜日
2010年10月6日水曜日
ANOVA 分散因子解析
3群比較などの検定を行う時に使うのがANOVA解析。
p = anova1(X)
p = anova1(X,group)
p = anova1(X,group,displayopt)
[p,table] = anova1(...)
[p,table,stats] = anova1(...)
行列Xは(サンプルX群)で入力する。
p値が十分小さければ、群間の平均は等しくなく、有意差があることになる。
その後、post hocテストで正式に有意差を示すことができる(ここを参照)。
multcompare
という関数にstatsを入力すればOKらしい。
(例)
[p t st]=anova1(X,{'50Hz','200Hz','800Hz'},'off');
[c,m,h,nms]=multcompare(st,'display','on');
[nms num2cell(m)]
p = anova1(X)
p = anova1(X,group)
p = anova1(X,group,displayopt)
[p,table] = anova1(...)
[p,table,stats] = anova1(...)
行列Xは(サンプルX群)で入力する。
p値が十分小さければ、群間の平均は等しくなく、有意差があることになる。
その後、post hocテストで正式に有意差を示すことができる(ここを参照)。
multcompare
という関数にstatsを入力すればOKらしい。
(例)
[p t st]=anova1(X,{'50Hz','200Hz','800Hz'},'off');
[c,m,h,nms]=multcompare(st,'display','on');
[nms num2cell(m)]
2010年10月5日火曜日
polyfit 多項式のフィッティング
p = polyfit(x,y,n)
[p,S] = polyfit(x,y,n)
[p,S,mu] = polyfit(x,y,n)
例えば、リニアフィッティングなら、
x=1:3;
y=[190 204 305];
[p,s,mu]=polyfit(x,y,1);
p =
57.5000 233.0000
s =
R: [2x2 double]
df: 1
normr: 35.5176
mu =
2
1
となる。pは係数(aX+bのaとb)ということになる。
sは
muは、データxの平均と分散か。
ちなみに、フィットぐらいを調べる関数として、こんなものありました。
gfit
参考までにどうぞ。
ちなみに、Goodness-of-Fittingはオプション8に相当する。
[p,S] = polyfit(x,y,n)
[p,S,mu] = polyfit(x,y,n)
例えば、リニアフィッティングなら、
x=1:3;
y=[190 204 305];
[p,s,mu]=polyfit(x,y,1);
p =
57.5000 233.0000
s =
R: [2x2 double]
df: 1
normr: 35.5176
mu =
2
1
となる。pは係数(aX+bのaとb)ということになる。
sは
muは、データxの平均と分散か。
ちなみに、フィットぐらいを調べる関数として、こんなものありました。
gfit
参考までにどうぞ。
ちなみに、Goodness-of-Fittingはオプション8に相当する。
2010年10月3日日曜日
行列の左右反転 Flip the matrix from right to left
fliplr
FLIPLR 行列の左右方向の反転
FLIPLR(X) は、X の行はそのままで、列を左右方向に反転させた結果を返します。
たとえば、
X = 1 2 3 は 3 2 1 になります。
4 5 6 6 5 4
FLIPLR 行列の左右方向の反転
FLIPLR(X) は、X の行はそのままで、列を左右方向に反転させた結果を返します。
たとえば、
X = 1 2 3 は 3 2 1 になります。
4 5 6 6 5 4
2010年9月30日木曜日
棒グラフ色々 Several bar graphs
Y = round(rand(5,3)*10);
subplot(2,2,1)
bar(Y,'grouped')
title 'Group'
subplot(2,2,2)
bar(Y,'stacked')
title 'Stack'
subplot(2,2,3)
barh(Y,'stacked')
title 'Stack'
subplot(2,2,4)
bar(Y,1.5)
title 'Width = 1.5'
subplot(2,2,1)
bar(Y,'grouped')
title 'Group'
subplot(2,2,2)
bar(Y,'stacked')
title 'Stack'
subplot(2,2,3)
barh(Y,'stacked')
title 'Stack'
subplot(2,2,4)
bar(Y,1.5)
title 'Width = 1.5'
2010年9月24日金曜日
軸の設定 Axis setting
・軸の反転
set(gca,'XDir','rev','YDir','rev','ZDir','rev')
・軸の範囲
set(axes_handle,'XLim',[0 100])
・軸の目盛
set(gca,'YTick',[0 0.05 0.075 0.1 0.15 0.2 0.25])
詳細はこちら
set(gca,'XDir','rev','YDir','rev','ZDir','rev')
・軸の範囲
set(axes_handle,'XLim',[0 100])
・軸の目盛
set(gca,'YTick',[0 0.05 0.075 0.1 0.15 0.2 0.25])
詳細はこちら
2010年9月21日火曜日
matrixの上下の反転 Flip a matrix from up to bottom
使えそうなコードを見つけた・・・flipud
matrixをup & downと反転させる場合に使えそう。
function y = flipud(x)
%FLIPUD Flip matrix in up/down direction.
% FLIPUD(X) returns X with columns preserved and rows flipped
% in the up/down direction. For example,
%
% X = 1 4 becomes 3 6
% 2 5 2 5
% 3 6 1 4
%
% Class support for input X:
% float: double, single
%
% See also FLIPLR, ROT90, FLIPDIM.
% Copyright 1984-2004 The MathWorks, Inc.
% $Revision: 5.9.4.3 $ $Date: 2004/07/05 17:01:15 $
if ndims(x)~=2
error('MATLAB:flipud:SizeX', 'X must be a 2-D matrix.');
end
y = x(end:-1:1,:);
matrixをup & downと反転させる場合に使えそう。
function y = flipud(x)
%FLIPUD Flip matrix in up/down direction.
% FLIPUD(X) returns X with columns preserved and rows flipped
% in the up/down direction. For example,
%
% X = 1 4 becomes 3 6
% 2 5 2 5
% 3 6 1 4
%
% Class support for input X:
% float: double, single
%
% See also FLIPLR, ROT90, FLIPDIM.
% Copyright 1984-2004 The MathWorks, Inc.
% $Revision: 5.9.4.3 $ $Date: 2004/07/05 17:01:15 $
if ndims(x)~=2
error('MATLAB:flipud:SizeX', 'X must be a 2-D matrix.');
end
y = x(end:-1:1,:);
errorbar etc....
Matlab Centralを見ると、errorbarに関するコードが他にもこんなにあった。
http://www.mathworks.com/matlabcentral/fileexchange/27387-create-healthy-looking-error-bars
http://www.mathworks.com/matlabcentral/fileexchange/10803-barweb-bargraph-with-error-bars
http://www.mathworks.com/matlabcentral/fileexchange/27494
ってなわけで、これを試してみるべし。
http://www.mathworks.com/matlabcentral/fileexchange/27387-create-healthy-looking-error-bars
http://www.mathworks.com/matlabcentral/fileexchange/10803-barweb-bargraph-with-error-bars
http://www.mathworks.com/matlabcentral/fileexchange/27494
ってなわけで、これを試してみるべし。
paired t-test
[h1,p1]=ttest2(X,Y,0.05,'both','unequal')
h1=1ならベクトルX,Yに有意に差がある。
h0=0ならベクトルX,Yにp1の確率で差がない。
h1=1ならベクトルX,Yに有意に差がある。
h0=0ならベクトルX,Yにp1の確率で差がない。
bar + errorbar
http://www.mathworks.co.jp/support/solutions/ja/data/1-9J8S0T/index.html?product=ML&solution=1-9J8S0Tより抜粋。
BAR 関数で棒グラフを描画し、ハンドルから棒グラフの左端と右端の X 座標を取得して中心値を計算し、中心値に対して ERRORBAR 関数で描画します。
具体的には、下記の手順で行なえます。
1. bar 関数で棒グラフを描画(このとき、出力引数を付けてハンドルを取得)
2. 上記 1 で得られたハンドル各棒グラフの X 座標値を取得し、各棒グラフの
中心座標を計算
3. 上記 2 で計算した X 座標を使用し、 errorbar 関数でエラーバーを描画
以下に例を示します。
% データ定義
Y = round(rand(5,3)*10); % グループ数 3、標本数 5
e = std(Y); % 標準偏差の計算
% 棒グラフの描画
figure, h = bar(Y,'hist'); % ハンドルを取得
hold on
[numgroups, numbars] = size(Y); % numgroups: グループ数, numbars: 標本数
% 各棒グラフのX座標値を取得
xdata = get(h,'XData'); % 出力はセル配列
% X座標から各棒グラフの中心座標を計算
centerX = cellfun(@(x)(x(1,:)+x(3,:))/2,xdata,'UniformOutput', false);
E = repmat(e,numgroups,1); % グラフ表示用にデータを拡張
C = {'b','g','r'}; % エラーバーの色
% 標準偏差を棒グラフに重ねて描画
for i = 1:numbars
errorbar(centerX{i,:}, Y(:,i), E(:,i), C{i},...
'linestyle', 'none','LineWidth',2);
end
なお、このプログラムでは、グループ毎に標準偏差の色分けを行い、さらに ERRORBAR 関数の各点を結ぶ線を非表示にしてプロットしています。
各点を結ぶ線を消すには、出力引数を付けて ERRORBAR 関数を実行後、'LineStyle' プロパティに 'None' を設定します。
また、プログラム内では、各棒グラフの X座標の中心座標を計算する際に、CELLFUN 関数を使用しています。この関数の機能については、関連ソリューションをご覧下さい。
BAR 関数で棒グラフを描画し、ハンドルから棒グラフの左端と右端の X 座標を取得して中心値を計算し、中心値に対して ERRORBAR 関数で描画します。
具体的には、下記の手順で行なえます。
1. bar 関数で棒グラフを描画(このとき、出力引数を付けてハンドルを取得)
2. 上記 1 で得られたハンドル各棒グラフの X 座標値を取得し、各棒グラフの
中心座標を計算
3. 上記 2 で計算した X 座標を使用し、 errorbar 関数でエラーバーを描画
以下に例を示します。
% データ定義
Y = round(rand(5,3)*10); % グループ数 3、標本数 5
e = std(Y); % 標準偏差の計算
% 棒グラフの描画
figure, h = bar(Y,'hist'); % ハンドルを取得
hold on
[numgroups, numbars] = size(Y); % numgroups: グループ数, numbars: 標本数
% 各棒グラフのX座標値を取得
xdata = get(h,'XData'); % 出力はセル配列
% X座標から各棒グラフの中心座標を計算
centerX = cellfun(@(x)(x(1,:)+x(3,:))/2,xdata,'UniformOutput', false);
E = repmat(e,numgroups,1); % グラフ表示用にデータを拡張
C = {'b','g','r'}; % エラーバーの色
% 標準偏差を棒グラフに重ねて描画
for i = 1:numbars
errorbar(centerX{i,:}, Y(:,i), E(:,i), C{i},...
'linestyle', 'none','LineWidth',2);
end
なお、このプログラムでは、グループ毎に標準偏差の色分けを行い、さらに ERRORBAR 関数の各点を結ぶ線を非表示にしてプロットしています。
各点を結ぶ線を消すには、出力引数を付けて ERRORBAR 関数を実行後、'LineStyle' プロパティに 'None' を設定します。
また、プログラム内では、各棒グラフの X座標の中心座標を計算する際に、CELLFUN 関数を使用しています。この関数の機能については、関連ソリューションをご覧下さい。
登録:
投稿 (Atom)