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?

 採用された回答

the cyclist
the cyclist 2011 年 1 月 29 日

4 投票

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;

その他の回答 (2 件)

Matt Fig
Matt Fig 2011 年 1 月 29 日

5 投票

Assuming you meant
x = [a,b;c,d];
then
y = blkdiag(x,x)
PUST rahman
PUST rahman 2012 年 6 月 19 日

1 投票

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 件のコメント

PUST rahman
PUST rahman 2012 年 6 月 19 日
The only advantage of this code is it tries to push the small matrix just in the middle of the bigger matrix.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File Exchange で Operating on Diagonal Matrices についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by