I want to implement this matrix

1 次查看(过去 30 天)
0;Ip-l;0.............0
0;0;0;Ip-l;0.......0
.........................
0;0..............0;Ip-l
it is M-Nt x L matrix where M=128
L=65
p=64
1,3,5...columns are zero
2,4,6 columns have Ip-l in consecutive rows

采纳的回答

Dr. Seis
Dr. Seis 2012-2-23
>> A = zeros(4,8);
>> A(:,2:2:end) = 5*eye(4,4);
>> A
A =
0 5 0 0 0 0 0 0
0 0 0 5 0 0 0 0
0 0 0 0 0 5 0 0
0 0 0 0 0 0 0 5
  3 个评论
Dr. Seis
Dr. Seis 2012-2-23
Provided N is even:
M = 96;
N = 128;
A = zeros(M,N);
A(:,2:2:end) = (Ip-1)*eye(M,N/2)
Janet
Janet 2012-2-23
Yes..I got it..thank you so much and without your help, I wouldn't have got a solution..thank you so much

请先登录,再进行评论。

更多回答(3 个)

John D'Errico
John D'Errico 2012-2-23
So many ways to do this. My favorite to recognize it as a block diagonal matrix.
d = repmat({[0 Ip-1]},1,64);
M = blkdiag(d{:});
If you want your matrix to be sparse (it surely should be, so why not use the capability?)
d = repmat({sparse([0 Ip-1])},1,64);
M = blkdiag(d{:});
I suppose this would work too. Making it sparse is trivial.
M = toeplitz([0, Ip-1,zeros(1,126)]);
M(2:end,:) = [];
  2 个评论
Janet
Janet 2012-2-23
using first command..how can i get 96 x 128 matrix
Janet
Janet 2012-2-24
d = repmat({[0 Ip-1]},1,64);
M = blkdiag(d{:});
using this command...i want 96x128 matrix...i.e M-Nt x L matrix
M=128;Nt=2;L=16

请先登录,再进行评论。


Sean de Wolski
Sean de Wolski 2012-2-23
look at diag, and eye.
doc diag
doc eye
Please provide an actual matrix we can copy and paste into MATLAB (small example) if you would like more detail.

G A
G A 2012-2-23
A=[zeros(64,1),(Ip-l)*eye(64,64)]
  6 个评论
Janet
Janet 2012-2-23
I need a M-Nt x L matrix i.e 96 x 128

请先登录,再进行评论。

类别

Help CenterFile 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