2016-07-19 12 views
-5

Diese Frage bezieht sich auf das Binning der Daten mit Matlab. Ich habe zwei Datensätze. In einem Datensatz habe ich x (repräsentiere die Geschwindigkeit) und y (repräsentiere die Leistung) den Wert, den ich gruppiert habe und berechne den Mittelwert, Rand und h Wert (siehe aus dem Code) jetzt mit Hilfe dieser Berechnung will ich identifizieren und meine eingehenden Daten übergeben (Hier im Code ist dies newdata) zu bestimmten bin, in denen sie gehören (die ich alle hier in unten angegebenen Code berechnet),. Im folgenden Code enthalten newdata die neuen Datensätze, die mit bin übereinstimmen. Bitte helfen Sie mir, wo ich Fehler zu machen oder es ändern Und ich folgende Störung erhalte:Kann mir jemand helfen, wo ich Fehler in meinem Matlab-Programm mache?

Error using > 
Matrix dimensions must agree. 
Error in Binning_Online (line 23) 
     newdatabin=find(newdata>binEdges,1,'last'); %this is the bin number where the new data goes in 

Code:

x= load speed; 
y= load power; 
newdata= load new_speed; 
topEdge = 20; % upper limit 
botEdge = 5; % lower limit 
numBins = 40; % define number of bins 
[N,edges,bins] = histcounts(y_vector,numBins); 
Pow_means = []; speed_means = []; 
for n = 1:numBins; 
    Pow_means(n,1) = mean(x_vector(bins==n,1)); % for each bins mean value calculation. 
    speed_means(n,1) = mean(y_vector(bins==n,1)); % for each bins mean value calculation. 
    pow_std(n,1) = std(x_vector(bins==n,1));  % for Standard deviation calculation 
    binEdges = linspace(botEdge, topEdge, numBins+1); 

    newdatabin= find(newdata>binedges,1,'last'); %this is the bin number where the new data goes in 
    h(newdatabin)=h(newdatabin)+1; 

end 
+0

Was ist die Frage? – user4759923

+1

warum schreibst du die Fehlermeldung nicht? – giosans

+0

@Giosans Dies ist der Fehler, den ich erhalte: Fehler bei der Verwendung von> Matrixdimensionen müssen übereinstimmen. Fehler in Binning_Online (Zeile 23) newdathin = finden (newdata> binEdges, 1, 'last'); % das ist die bin-nummer, wo die neuen daten gehen –

Antwort

1

Wie andere haben in den Kommentaren darauf hingewiesen, heißt es in der Fehler einfach, dass newdata ist von verschiedenen size als binedges, und daher newdata > binedges führt zu einem Fehler.

Meine Vermutung ist, dass die Linie

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

binEdges = linspace(botEdge, topEdge, numBins) 

auf der Annahme sein sollte, dass Ihr newdata Array der Länge ist numBins

Wenn diese Annahme falsch ist, dann Ihr Problem ist, dass Sie willkürlich eine Anzahl von Bins einstellen, die nicht der Länge von newdata entspricht. Anstatt magische Zahlen zu verwenden, sollten Sie Ihre Zahlen von Ihren Daten erhalten. (d. h. statt numbins = 40 vielleicht sollten Sie tun numbins = length(newdata))