MATLAB: Computing findpeaks along 3-Dimensional matrix

cell arrayfindpeaksmultidimensional matrix

I have a 3-dimensional matrix, after some code manipulation on a cell array. The matrix is of size 101x151x476.
The first number represents the y space, the second number is the x space, and the third number is the number of time steps. So essentially, the matrix contains magnitudes along a y-x plane, for varying timesteps.
I am trying to compute the peaks at each (y,x) across the timesteps. I am doing this using findpeaks. This is what I have so far:
for yIndex= 1:1:101
for xIndex= 1:1:151
[peaks{y,x}] = findpeaks(a3Dmatrix(yIndex,xIndex,:));
end
end
However, the cell "peaks" is incorrect, as it is not of the size 101×151 (y by x). Any help with this?

Best Answer

  • I am guessing here, since I do not have your data. Since findpeaks is going to return vectors for the peaks, locations (and othher outputs if you want them), I would do something like this:
    for yIndex= 1:1:101
    for xIndex= 1:1:151
    [peaks{yIndex,xIndex,:},locs{yIndex,xIndex,:}] = findpeaks(a3Dmatrix(yIndex,xIndex,:));
    end
    end
    I cannot test that because I do not have your data, so I am posting it as UNTESTED CODE.