Frage

Ich habe nicht in der Lage gewesen, eine Funktion in Matlab zu finden oder Oktave zu tun, was ich will. Ich habe eine Matrix M von zwei Spalten (x und y-Wert). Ich weiß, dass ich die Spalte, indem Sie m extrahieren kann (:, 1) oder m (:, 2). Ich will es in kleinere Matrizes von [möglicherweise] gleicher Größe aufgeteilt und und der Durchschnitt dieser Matrizes plotten. Mit anderen Worten, ich möchte die Werte in Bins auf die x-Werte auf Basis stellen, dann mittels der Fächer finden. Ich fühle mich wie die hist Funktion soll mir helfen, aber es scheint nicht zu.

Kennt jemand eine eingebaute Funktion, so etwas zu tun?

Bearbeiten

hatte ich gedacht zu erwähnen, dass ich auf hist geschaut und konnte es nicht bekommen zu tun, was ich wollte, aber es muss mir entfallen sind.

Beispiel: Nehmen wir an, ich habe folgendes (ich versuche, dies in Oktaven, aber afaik es funktioniert in Matlab):

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

Wenn ich 10 Bins will, würde ich m wie in aufgeteilt werden:

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

und erhält dann den Mittelwert jeder ist.

Update: Ich habe eine Follow-up Frage hier geschrieben. Ich würde stark Antworten zu schätzen wissen.

War es hilfreich?

Lösung

Ich habe dies auf meinem Blog in Videoform beantwortet:

http://blogs.mathworks.com / Videos / 2009/01/07 / Binning-data-in-Matlab /

Hier ist der Code:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top