Azzera filtri
Azzera filtri

Can I store multiple outputs of a function into a cell?

16 visualizzazioni (ultimi 30 giorni)
I am using the function 'ndgrid' to construct a n-dimensional mesh. But I would like to generalize my programme for n-dimensions.
Is there any way where I could store the outputs of the function into a cell, as the number of outputs depends on the number of dimensions.
Something like :
X{:} = ndgrid(x{:})
  4 Commenti
KSSV
KSSV il 30 Mar 2017
Why you want like that? Are you really going to give long dimensions?
Guillaume
Guillaume il 30 Mar 2017
@Rik, KSSV, this is indeed commonly used with ndgrid when you want to generate the cartesian product of an unknown number of vectors:
function p = cartprod(c)
%returns the cartesian products of the vectors contained in cell array v
p = cell(size(c));
[p{:}] = ndgrid(c{:});
p = cell2mat(cellfun(@(x) x(:), p, 'UniformOutput', false));
end

Accedi per commentare.

Risposta accettata

KSSV
KSSV il 30 Mar 2017
Modificato: KSSV il 30 Mar 2017
x = [{1:10} {1:10}] ;
[I{1:numel(x)}] = ndgrid(x{:}) ;
I
  4 Commenti
Stephen23
Stephen23 il 30 Mar 2017
This is bizarre:
x = [{1:10} {1:10}] ;
Why not simply write this?:
x = {1:10,1:10};
KSSV
KSSV il 30 Mar 2017
Modificato: KSSV il 30 Mar 2017
@Stephen yes..you are right.. @ Kiran..the second one will not work you are right. I executed it in my pc without clearing variables. So it worked.

Accedi per commentare.

Più risposte (1)

Stephen23
Stephen23 il 30 Mar 2017
Modificato: Stephen23 il 30 Mar 2017
Your syntax was almost correct, you just need to preallocate the output cell array and use square brackets:
>> inp = {1:3,4:5,6:7};
>> out = cell(size(inp));
>> [out{:}] = ndgrid(inp{:});

Categorie

Scopri di più su Matrices and Arrays 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