Replacing Values of a Larger Matrix with that of a Smaller Matrix
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Richard Zareck
el 10 de Sept. de 2017
Respondida: Jose Marques
el 10 de Sept. de 2017
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 comentarios
Respuesta aceptada
Cedric
el 10 de Sept. de 2017
Editada: Cedric
el 10 de Sept. de 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 comentarios
Cedric
el 10 de Sept. de 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.
Más respuestas (1)
Jose Marques
el 10 de Sept. de 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 comentarios
Ver también
Categorías
Más información sobre Matrices and Arrays en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!