Use only defined 4D array elements

1 visualización (últimos 30 días)
Mantas Vaitonis
Mantas Vaitonis el 22 de Jul. de 2018
Comentada: Mantas Vaitonis el 22 de Jul. de 2018
Hello to All, There is 4D array varcov (NxNxZxL), I need to make other 4D array with the following values:
varcov1=[varcov(1,1,:,:) varcov(2,2,:,:) varcov(3,3,:,:) ..till end(N)];
That result varcov1 would be (1xNxZxL).

Respuesta aceptada

Rik
Rik el 22 de Jul. de 2018
The code below should work for you. Since R2016b you can use the line with implicit expansion.
N=3;Z=4;L=6;
varcov=reshape(1:(N*N*Z*L),N,N,Z,L);%generate sample data
inds=bsxfun(@plus,(1:N+1:N^2)',N^2*(0:(Z*L-1)));%find the inds to the diagonal of each slice
%(1:N+1:N^2)'+N^2*(0:(Z*L-1)); with implicit expansion
varcov1=reshape(varcov(inds),1,N,Z,L);

Más respuestas (0)

Categorías

Más información sobre Portfolio Optimization and Asset Allocation en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by