matrices for empty create column array matlab matrix octave

for - Binning en matlab



octave matrix dimensions (1)

No he podido encontrar una función en matlab u octava para hacer lo que quiero. Tengo una matriz m de dos columnas (valores xey). Sé que puedo extraer la columna haciendo m (:, 1) o m (:, 2). Quiero dividirlo en matrices más pequeñas de tamaño [potencialmente] igual y trazar el promedio de estas matrículas. En otras palabras, quiero poner los valores en contenedores basados ​​en los valores x, luego encontrar los medios de los contenedores. Siento que la función hist me debería ayudar, pero parece que no.

¿Alguien sabe de una función incorporada para hacer algo como esto?

editar

Tenía la intención de mencionar que miré a hist y que no podía lograr que hiciera lo que quería, pero debe haberme olvidado.

Ejemplo: Digamos que tengo lo siguiente (estoy intentando esto en octava, pero afaik funciona en matlab):

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

Si quiero 10 contenedores, me gustaría que se dividan en:

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

y luego obtener la media de cada contenedor.

Actualización: He publicado una pregunta de seguimiento aquí . Agradecería mucho las respuestas.


He respondido esto en video en mi blog:

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

Aquí está el código:

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