Insert a matrix within a matrix

21 views (last 30 days)
Franco
Franco on 29 Jan 2011
Im trying to insert a matrix within a matrix, such that, if
x=[a,d;c,d], then y=[a,b,0,0;c,d,0,0;0,0,a,b;0,0,c,d]. Basically, matrix X becomes the diagonals of of the zero matrix Y.
anyone in cyberland have an idea on how to do this?

Accepted Answer

the cyclist
the cyclist on 29 Jan 2011
Matt's solution does precisely what you ask. You might also like to know that in general, you can insert one array into another by indexing on the left-hand side of an assignment statement:
>> x = rand(2);
>> y = zeros(8);
>> y(5:6,3:4) = x;

More Answers (2)

Matt Fig
Matt Fig on 29 Jan 2011
Assuming you meant
x = [a,b;c,d];
then
y = blkdiag(x,x)

PUST rahman
PUST rahman on 19 Jun 2012
function R=insertMatrix(B,b)
% INPUT: B: Bigger matrix % b: small matrix that needs to put inside bigger matrix, B %OUTPUT: R: Resultant matrix % Example: % B=zeros(10,10); b=ones(5,5); % R=insertMatrix(B,b);
% this matlab script is written by Hafiz, PhD Student, UNSW, Canberra % hafizurcse@yahoo.com
[P,Q]=size(B);
fx=floor(P/2)-floor(size(b,1)/2);
fy=floor(Q/2)-floor(size(b,2)/2);
R=B;
for p=1:size(b,1)
for q=1:size(b,2)
R(fx+p,fy+q)=b(p,q);
end
end
return;
  1 Comment
PUST rahman
PUST rahman on 19 Jun 2012
The only advantage of this code is it tries to push the small matrix just in the middle of the bigger matrix.

Sign in to comment.

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!