Replacing Values of a Larger Matrix with that of a Smaller Matrix
2 views (last 30 days)
Show older comments
I have a matrix A that looks like:
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
and a matrix B that looks like:
0 0
0 0
0 0
0 0
0 0
0 0
How can I create a new matrix C that looks like:
0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0
by inserting B into A and without using loops. Also if this is not possible, is there a way to create matrix C from matrix A?
0 Comments
Accepted Answer
Cedric
on 10 Sep 2017
Edited: Cedric
on 10 Sep 2017
b = mod( floor( (0:size( A, 2 )-1)/2 ), 2 ) ;
C = bsxfun( @times, A, b ) ;
Note that the way I define b=00110011.. is ... shows that I am tired!
2 Comments
Cedric
on 10 Sep 2017
My pleasure. I answered thinking that you wanted to "mask" columns of A, hence the multiplication by 0 and 1 of given columns. Let me know if the purpose was different.
More Answers (1)
Jose Marques
on 10 Sep 2017
imgSiz = [x1,y1];
blkSiz = [x1,size_column];
numRep = imgSiz./blkSiz;
basMat = toeplitz(mod(0:numRep(1)-1,2),mod(0:numRep(2)-1,2));
mask(:,:) = repelem(basMat,x1,size_column);
0 Comments
See Also
Categories
Find more on Matrix Indexing 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!