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).
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
shrisha tv
il 25 Giu 2018
Commentato: shrisha tv
il 26 Giu 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 Commenti
Risposta accettata
Jos (10584)
il 25 Giu 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 Commenti
Jos (10584)
il 25 Giu 2018
for a N-by-K array
cellM = arrayfun(@(k) mean(data(1:k,:),2), n, 'un', 0) % engine
M = cat(1,cellM{:})
Più risposte (1)
Ankita Bansal
il 25 Giu 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
Vedere anche
Categorie
Scopri di più su Variables in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!