How to convert a 3x3xN matrix to a N element cell array?

6 visualizzazioni (ultimi 30 giorni)
Hi all,
I have a three dimension matrix of 3x3xN, where N is a large number. I want to convert it to a N elements cell array in which every cell i contains the 3x3 matrix in the i'th position. I tried to work it out using the functions 'mat2cell' and 'num2cell' but couldn't understand how to do it. I read the help for these two functions but it didn't help me.
Can it be done?
Thanks,
Alon

Risposta accettata

Alexandra Harkai
Alexandra Harkai il 21 Nov 2016
Modificato: Alexandra Harkai il 21 Nov 2016
% a is your 3*3*N array
c = mat2cell(a,3,3,ones(1,N));
c = c(:);
  2 Commenti
Alon Rozen
Alon Rozen il 21 Nov 2016
Thanks a lot! works like charm :) Wander why the help can't explain something like this...
Alexandra Harkai
Alexandra Harkai il 21 Nov 2016
It does actually (ie. you first want something that contains 3*3*1 elements in each cell, so according to help you need to go for [3],[3],[1 1 ...]), but that doesn't mean one doesn't get it wrong for the first try. Trial an error :)

Accedi per commentare.

Più risposte (1)

KSSV
KSSV il 21 Nov 2016
A = rand(3,3,100) ;
[m,n,t] = size(A) ;
iwant=mat2cell(A, m, n, ones(1,t));
  1 Commento
Alon Rozen
Alon Rozen il 21 Nov 2016
Thanks a lot! It work of cousre. I just needed the last step in the answer above.

Accedi per commentare.

Categorie

Scopri di più su Data Type Conversion 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