I want to add another inquiry, In the above setting B=vech(A), on the relation B(f)=A(i,j), we have the following relation on the indices that f=(j-1)(k-j/2)+i, where k is the order of the matrix A (here k=3) if I know f and K can I know the corresponding i,j ??
How to create a matrix with 1 on ij-th position and zeros elsewhere from a lower triangular matrix?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Niveen El Zayat
am 31 Mai 2018
Kommentiert: Niveen El Zayat
am 31 Mai 2018
It may be a very simple question For a symmetric matrix A (3x3), say A=[2 4 6;4 8 11;6 11 20], the way to extract its unique elements (on and lower the diagonal) in an output vector B is:
B=(A(tril(A)~=0))
B = 2
4
6
8
11
20
How can I create matrices C1,C2,C3,...,C6, such that
B(1)=A.*C1, B(2)=A.*C2, ..., B(6)=A.*C6
C1=[1 0 0;0 0 0;0 0 0];
C2=[0 0 0;1 0 0;0 0 0];
C3=[0 0 0;0 0 0;1 0 0];
C4=[0 0 0;0 1 0;0 0 0];
C5=[0 0 0;0 0 0;0 1 0];
C6=[0 0 0;0 0 0;0 0 1];
Akzeptierte Antwort
Stephen23
am 31 Mai 2018
Bearbeitet: Stephen23
am 31 Mai 2018
A = [2,4,6;4,8,11;6,11,20]
S = size(A);
T = tril(true(S));
[R,C] = find(T);
N = nnz(T);
Z = zeros([S,N]);
V = 1:N;
Z(sub2ind([S,N],R,C,V(:))) = 1
Each page of Z (i.e. the third dimension) is one of the requested matrices, which you can access easily using indexing:
>> Z(:,:,1)
ans =
1 0 0
0 0 0
0 0 0
>> Z(:,:,2)
ans =
0 0 0
1 0 0
0 0 0
...
>> Z(:,:,6)
ans =
0 0 0
0 0 0
0 0 1
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!