Use only defined 4D array elements

2 visualizzazioni (ultimi 30 giorni)
Mantas Vaitonis
Mantas Vaitonis il 22 Lug 2018
Commentato: Mantas Vaitonis il 22 Lug 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).

Risposta accettata

Rik
Rik il 22 Lug 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);

Più risposte (0)

Categorie

Scopri di più su Operators and Elementary Operations in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by