problem in calculating mean from the required element of matrix??

2 Ansichten (letzte 30 Tage)
NAVNEET NAYAN
NAVNEET NAYAN am 5 Mai 2017
Bearbeitet: KL am 5 Mai 2017
I have a matrix mat6 of dimension 1-by-210. j =210. I am applying a threshold condition on mat6 and then i need to calculate the mean of next twenty elements . I want that the mean should be calculated from that first element of mat6 at which threshold condition was met at first time. But it is calculating mean from that last element of mat6 at which the threshold condition was met.
for k = 1:j-20
if mat6(k)>0.5
w=k+20;
mea = sum(mat6(1,k:w))/20;
end
end
can anyone please sort out this problem ??
Thanks
Navneet Nayan

Akzeptierte Antwort

KL
KL am 5 Mai 2017
Bearbeitet: KL am 5 Mai 2017
k = 1;
while k <j-20
if mat6(k)>0.5
mea = mean(mat6(1,k:k+19))
k=k+20;
else
k = k+1;
end
end

Weitere Antworten (1)

Jan
Jan am 5 Mai 2017
Bearbeitet: Jan am 5 Mai 2017
index = find(mat6 > 0.5, 1); % Find 1 index only
mea = mean(mat6(index:index+19));
Consider that index+19 might exceed the data size. Handle this situation e.g. by an error, e.g.:
index = find(mat6 > 0.5, 1);
if index + 19 > size(mat6, 2)
error('Index out of range in mat6');
end
  6 Kommentare
NAVNEET NAYAN
NAVNEET NAYAN am 5 Mai 2017
tell me one thing Jan, if i want to use the subsequent indices for eg. i want to use the second or 3rd index, how can I proceed??
KL
KL am 5 Mai 2017
Bearbeitet: KL am 5 Mai 2017
index = find(mat6 > 0.5);
%this finds all the indices and then you could follow Andrei's command. (with the error check by Jan)
mea = mean( mat6( bsxfun(@plus,index(:)',(0:19)')) );

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by