hi, I have 2 columns data, In that every 1 column data of 1000 value (like 1.2345). i have split this data into (1 to 30), (1 to 60),so on (1 to 990).
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
shrisha tv
el 25 de Jun. de 2018
Comentada: shrisha tv
el 26 de Jun. de 2018
manually it is very difficult to do it. and also find the average of that, means avg of (1 to 30), avg of (1 to 60) so on for statistical problem.please any one help me to solve using matlab.
0 comentarios
Respuesta aceptada
Jos (10584)
el 25 de Jun. de 2018
Here is a way:
data = randi(10,20,1) % some data (20 points, rather than 1000, so easy to check)
n = 4:4:numel(data) % split from 1 to 4, from 1 to 8 etc (rather than 1:30, 1:60)
M = arrayfun(@(k) mean(data(1:k)), n) % engine
2 comentarios
Jos (10584)
el 25 de Jun. de 2018
for a N-by-K array
cellM = arrayfun(@(k) mean(data(1:k,:),2), n, 'un', 0) % engine
M = cat(1,cellM{:})
Más respuestas (1)
Ankita Bansal
el 25 de Jun. de 2018
Hi, are you getting error or incorrect answer?
data(2,2) is equivalent to data(1002).
So if you write
n = 30:30:numel(data)
M = arrayfun(@(k) mean(data(1:k)), n)
it will actually calculate avg of (1 to 30), (1 to 60), ... ,(1 to 990), (1 to 1020) and so on. I am assuming that you want to calculate average of (1 to 30), (1 to 60), and so on till (1 to 990) for each column separately.
Which you can do as
data = randi(10,1000,2);
[s_R,s_C]=size(data);
n = 30:30:s_R;
for i=1:s_C
data1=data(:,i) ;
M(:,i) = arrayfun(@(k) mean(data1(1:k)), n)';
end
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!