How to compare matrix elements with their neighbors?
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi, I have a matrix A (50x1). I have to compare each element of matrix A with its two neighbors. The element of the matrices are organized in a circular way and the neighbors definition is as follows: Element "i" has two neighbors: element "i+1" and element "i-1", For instance element 2 has neighbors 1 and 3, element 50 has neighbors 49 and 1, element 1 has neighbors 50 and 2. If the value of element "i" from matrix A is smaller than value of element "i+1" and element "i-1" from matrix A,then I build another matrix B which element "i" is equal to element "i" from A matrix.
Any advice how to write this is very appreciated.
0 Kommentare
Akzeptierte Antwort
Image Analyst
am 24 Nov. 2016
You can use imregionalmin() from the Image Processing Toolbox, but you'll have to pad your array
% Create sample data.
A = uint8(randi(255, 1, 50))
% Pad A and create temporary vector paddedA
% so that we don't alter A (we might need the original A later).
paddedA = [A(end), A, A(1)];
minLocations = imregionalmin(paddedA)
% Create B
B = zeros(1, length(paddedA));
% Assign in the values of A
B(minLocations) = paddedA(minLocations);
% Crop back down.
B = B(2:end-1)
Weitere Antworten (1)
Guillaume
am 24 Nov. 2016
Bearbeitet: Guillaume
am 24 Nov. 2016
A = randi(20, 50, 1); %demo matrix
%using simple indexing
tocopy = A < [A(2:end); A(1)] & A < [A(end); A(1:end-1)];
%using circshift
tocopy = A < circshift(A, 1) & A < circshift(A, -1);
%now copy the selected values
B = zeros(size(A)); %create B first
B(tocopy) = A(tocopy); %copy
0 Kommentare
Siehe auch
Kategorien
Mehr zu Logical 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!