create a sparse multidimensional matrix
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi all,
I am trying to construct a multidimensional sparse matrix that has the following shape:
I have a problem knowing how to jump from column to the next, shift the rows downwards, and assign number 1 to the third element.
Any help would be appreicted.
Thanks.
0 comentarios
Respuestas (5)
Jonas
el 7 de Jul. de 2022
Editada: Jonas
el 7 de Jul. de 2022
you can try this:
myData=[1 2 3 4;
5 6 7 8;
9 10 11 12];
% get sizes
dataChunkLength=size(myData,2);
numOfChunks=size(myData,1);
% preallocate
mat=zeros(dataChunkLength*numOfChunks,numOfChunks);
for colNr=numOfChunks:-1:1
% write
mat(1:dataChunkLength,colNr)=myData(colNr,:);
if colNr>1
% and shift along first dimension
mat=circshift(mat,dataChunkLength,1);
end
end
disp(mat)
or, if you waqnt to write alswys the same data
myData=[0 0 1 0];
% get length
dataChunkLength=numel(myData);
% write to n columns
nTimes=5;
% preallocate
mat=zeros(dataChunkLength*nTimes,nTimes);
for colNr=nTimes:-1:1
% write
mat(1:dataChunkLength,colNr)=myData;
if colNr>1
% and shift along first dimension
mat=circshift(mat,dataChunkLength,1);
end
end
disp(mat)
0 comentarios
Torsten
el 7 de Jul. de 2022
i(1) = 3;
j(1) = 1;
v(1) = 1.0;
i(2) = 7;
j(2) = 2;
v(2) = 1.0;
i(3) = 11;
j(3) = 3;
v(3) = 1.0;
m = 12;
n = 3;
A = sparse(i,j,v,m,n)
0 comentarios
Karim
el 7 de Jul. de 2022
you can either fill it in directly or use blkdiag to create this shape:
% direct method
% on row 3 7 and 11, column 1 2 3 respectivly, fill in 1, with 12 rows and 3 columns
SparseDirect = sparse([3 7 11],[1 2 3],1,12,3)
% alternative using blkdiag
A = sparse( [0;0;1;0] );
B = sparse( [0;0;1;0] );
C = sparse( [0;0;1;0] );
SparseMat = blkdiag(A,B,C)
% full visualisation
full(SparseMat)
0 comentarios
KSSV
el 7 de Jul. de 2022
A = sparse(12,3) ;
A(3,1) = 1 ;
A(7,2) = 1 ;
A(11,3) = 1 ;
A
full(A)
0 comentarios
Ver también
Categorías
Más información sobre Sparse Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!