Align curves along their minma

2 vues (au cours des 30 derniers jours)
Paola
Paola le 28 Oct 2021
Commenté : Paola le 31 Oct 2021
Hi all,
I have a matrix (33X 5000) and each row of this matrix is a curve. I want to center all the curves along their minima, which I have already found and it is the column vector m=(51X1). I tried with a loop but it is not working. Can you help me with that? thanks .
  7 commentaires
Image Analyst
Image Analyst le 28 Oct 2021
@Paola I think my code below in my answer should solve it, right?
Paola
Paola le 31 Oct 2021
Thank you very much @Image Analyst. It works perfectly :)

Connectez-vous pour commenter.

Réponse acceptée

Image Analyst
Image Analyst le 28 Oct 2021
Try this:
% Create sample data.
b = rand(33, 5000);
% Find the location (index) of the min in each row of b.
[minValues, indexOfMins] = min(b, [], 2);
[rows, columns] = size(b)
% Allocate space to place the aligned vectors.
bCentered = nan(rows, 2 * columns - 1);
% Shift each row of b such that the min occurs at column "columns".
for row = 1 : rows
% Find out where the start of this row should begin in the output matrix.
startingColumn = columns - indexOfMins(row) + 1;
% Paste it there.
bCentered(row, startingColumn : startingColumn + columns - 1) = b(row, :);
end
% Now they're all aligned with the min showing up at column "columns"
% which is in the middle of the bCentered array.
% Optional : If you want to crop off columns of all nans to the right and left, do this:
goodColumns = ~all(isnan(bCentered), 1);
firstGoodColumn = find(goodColumns, 1, 'first')
lastGoodColumn = find(goodColumns, 1, 'last')
% Extract (crop out) the good columns
bCentered = bCentered(:, firstGoodColumn:lastGoodColumn);
% Optional: replace nan's with some filler value, like 0 or -1 or whatever you want.
bCentered(isnan(bCentered)) = 0;

Plus de réponses (0)

Catégories

En savoir plus sur Image Processing Toolbox dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by