質問

matlabまたはoctaveで必要な機能を実行する機能を見つけることができませんでした。 2列の行列m(xとyの値)があります。 m(:、1)またはm(:、2)を実行して列を抽出できることを知っています。 [潜在的に]同じサイズの小さな行列に分割し、これらの行列の平均をプロットしたいと思います。言い換えると、x値に基づいて値をビンに入れてから、ビンの平均値を見つけたいということです。 hist関数は私を助けてくれるように感じますが、そうではないようです。

このようなことを行う組み込み関数を知っている人はいますか?

編集

histを見て、望んでいたことを実行できなかったことに言及するつもりでしたが、それは心を滑らせたに違いありません。

例:次のようなものがあるとしましょう(オクターブでこれを試していますが、matlabで動作します):

x=1:20;
y=[1:10,10:1];
m=[x, y];

10個のビンが必要な場合、mを次のように分割します:

m1=[1:2, 1:2]
...
m5=[9:10, 9:10]
m6=[10:11, 10:-1:9]
...
m10=[19:20, 2:-1:1]

次に各ビンの平均を取得します。

更新:ここに追加の質問を投稿しました。返信をいただければ幸いです。

役に立ちましたか?

解決

ブログでビデオ形式でこれに回答しました:

http://blogs.mathworks.com / videos / 2009/01/07 / binning-data-in-matlab /

コードは次のとおりです:

m = rand(10,2); %Generate data

x = m(:,1); %split into x and y
y = m(:,2);

topEdge = 1; % define limits
botEdge = 0; % define limits
numBins = 2; % define number of bins

binEdges = linspace(botEdge, topEdge, numBins+1);

[h,whichBin] = histc(x, binEdges);

for i = 1:numBins
    flagBinMembers = (whichBin == i);
    binMembers     = y(flagBinMembers);
    binMean(i)     = mean(binMembers);
end
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top