Forming a block diagonal matrix of one certain matrix?
    8 ビュー (過去 30 日間)
  
       古いコメントを表示
    
I have a matrix A which is m*n. I want to create a block tridiagonal matrices of size n*m whose diagonals elements are the matrix A.
B=eye(3);
C=ones(2);
S=ones(2);
for i=1:numel(A)
   A(i,i) =repmat(B,i,1)
    A(i,i+1)=repmat(C,i,1)
    A(i,i-1)=repmat(S,i,1)
end
can anyone help me to find the error 
3 件のコメント
  Adam Danz
    
      
 2020 年 1 月 13 日
				If that's the example of A, then A cannot be a matrix.  Is it a cell array or is the example misleading?
回答 (1 件)
  Matt J
      
      
 2020 年 1 月 13 日
        
      編集済み: Matt J
      
      
 2020 年 1 月 13 日
  
      S=1*ones(2);
B=2*ones(2);
C=3*ones(2);
copies=4; %number of repetitions
L=flip( {S,B,C, zeros(size(B))  } );
idx=full(interpMatrix([1,2,3],2,copies,1))+1;
A=cell2mat(L(idx))
A =
     2     2     3     3     0     0     0     0
     2     2     3     3     0     0     0     0
     1     1     2     2     3     3     0     0
     1     1     2     2     3     3     0     0
     0     0     1     1     2     2     3     3
     0     0     1     1     2     2     3     3
     0     0     0     0     1     1     2     2
     0     0     0     0     1     1     2     2
0 件のコメント
参考
カテゴリ
				Help Center および 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!



