Change certain values in a matrix

6 views (last 30 days)
Nikolas Spiliopoulos
Nikolas Spiliopoulos on 29 Dec 2021
Answered: Hornett on 30 Sep 2024
Hi all I jhave a matrix A
A=[1 1 0 0 1 1 1 0; 0 0 1 1 1 1 0 0; 1 1 0 0 1 1 0 1; 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1]
I would like to "correct" its columns like this:
when I have a column where the sequence "0 1 0" appears I want to be changed to "0 0 0"
AND
when I have a column where the sequence "1 0 1" appears I want to be changed to "1 1 1"
So I have finaly the matrix B
B=[1 1 0 0 1 1 1 0; 1 1 0 0 1 1 0 0; 1 1 0 0 1 1 0 1; 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1]
I would like to use it for a larger matrix under this concept.
Do you know how to do it?
thanks in advance!
  4 Comments
Torsten
Torsten on 29 Dec 2021
Edited: Torsten on 29 Dec 2021
I would say you have to define another rule.

Sign in to comment.

Answers (1)

Hornett
Hornett on 30 Sep 2024
Hi Nikolas,
I have understood that you are looking to replace specific patterns in a column vector. To perform the action you can try the below code which will yeild the desired result:
A=[1 1 0 0 1 1 1 0; 0 0 1 1 1 1 0 0; 1 1 0 0 1 1 0 1; 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1];
B=[1 1 0 0 1 1 1 0; 1 1 0 0 1 1 0 0; 1 1 0 0 1 1 0 1; 1 1 1 1 1 1 1 1; 1 1 1 1 1 1 1 1];
X=A;
% row vector format
pattern1 = [0 1 0];
pattern2 = [1 0 1 1];
X = applyFilter(A,pattern1,[0 0 0]);
X = applyFilter(X,pattern2,[1 1 1 1]);
isequal(X,B) % Check if X is equal to B
X % Display the corrected matrix X
B % Display the desired matrix B
function X = applyFilter(A,pattern,replaceWith)
X=A;
patternSize = size(pattern,2);
for row = 1:size(A,1)- patternSize
for col = 1:size(A, 2)
isequal(A(row:row+patternSize-1, col), pattern' ); % Check if the pattern matches the current submatrix
if isequal(A(row:row+patternSize-1, col), pattern' )
X(row:row+patternSize-1, col)= replaceWith'; % Replace the submatrix with the specified values
end
end
end
end
Feel free to modify the code according your usecase. I hope it helped in resolving your issue.

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!