Sparse Array with reshape

28 visualizaciones (últimos 30 días)
Amit Chakraborty
Amit Chakraborty el 9 de Oct. de 2021
Comentada: Amit Chakraborty el 10 de Oct. de 2021
I have a similar type of problem Yesterday but that is with non-sparse matrix. I am very newly dealing with these sparse matrix stuffs.
X = sparse(rand(360, 4^3));
Y = sparse(rand(10, 4^3));
FF = reshape(X, 36, 10, []);
TT = reshape(Y, 1, 10, []);
Result = reshape(FF .* TT, 360, []);
Error: Error using reshape.ND sparse arrays are not supported.
**** My actual sparse matrix size is very big so I cannot use "full" fuction there. *******
Explanation what I actually want :
Here, the size of X and Y is 360x1 and 10x1 sparse matrix respectively. I want to multiply in such a manner that the : first 36 row of F will be multiplied by the first row of T and next 36 row of F will be multiplied by second row of T and continue the like this. And the resultant Matrix will have the size (360,4^3). I am getting error because I know that 3D array cannot be reshaped in MATLAB.

Respuesta aceptada

Matt J
Matt J el 9 de Oct. de 2021
Editada: Matt J el 9 de Oct. de 2021
Consider downloading ndSparse.
FF = ndSparse.sprand( [36, 10,4^3],0.2);
TT = ndSparse.sprand([1,10, 4^3], 0.2);
Result = sparse2d( reshape(FF .* TT, 360, []) );
whos FF TT Result
Name Size Bytes Class Attributes FF 36x10x64 67520 ndSparse sparse Result 360x64 12312 double sparse TT 1x10x64 2384 ndSparse sparse

Más respuestas (0)

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!

Translated by