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

15 visualizaciones (últimos 30 días)
Kiran Sagar Kollepara
Kiran Sagar Kollepara el 30 de Mzo. de 2017
Editada: KSSV el 30 de Mzo. de 2017
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 comentarios
KSSV
KSSV el 30 de Mzo. de 2017
Why you want like that? Are you really going to give long dimensions?
Guillaume
Guillaume el 30 de Mzo. de 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

Iniciar sesión para comentar.

Respuesta aceptada

KSSV
KSSV el 30 de Mzo. de 2017
Editada: KSSV el 30 de Mzo. de 2017
x = [{1:10} {1:10}] ;
[I{1:numel(x)}] = ndgrid(x{:}) ;
I
  4 comentarios
Stephen23
Stephen23 el 30 de Mzo. de 2017
This is bizarre:
x = [{1:10} {1:10}] ;
Why not simply write this?:
x = {1:10,1:10};
KSSV
KSSV el 30 de Mzo. de 2017
Editada: KSSV el 30 de Mzo. de 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.

Iniciar sesión para comentar.

Más respuestas (1)

Stephen23
Stephen23 el 30 de Mzo. de 2017
Editada: Stephen23 el 30 de Mzo. de 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{:});

Categorías

Más información sobre Matrices and Arrays 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