Is it possible to copy the elements of a matrix to a set of variable names ?

4 visualizaciones (últimos 30 días)
Given is a matrix A of size [1x6]. What I want is to copy the elements of A to a set of variable names [a,b,c,d,e,f], so that
a = A(1);
b= A(2)
a.s.o.
I tried
[a,b,c,d,e,f] = deal(A);
But this copies not the elements but the hole matrix A into each variable.
Any help is much appreciated.

Respuesta aceptada

Walter Roberson
Walter Roberson el 13 de Mzo. de 2013
Editada: Walter Roberson el 13 de Mzo. de 2013
Acell = num2cell(A);
[a,b,c,d,e,f] = deal(Acell{:}); %older MATLAB
[a,b,c,d,e,f] = Acell{:}; %newer MATLAB
  1 comentario
Alexander
Alexander el 13 de Mzo. de 2013
Thanks Walter. This is quite simple. And I do not have any problems with definition of what workspace it is.
Thank you, Azzi for your help too.

Iniciar sesión para comentar.

Más respuestas (1)

Azzi Abdelmalek
Azzi Abdelmalek el 13 de Mzo. de 2013
Editada: Azzi Abdelmalek el 13 de Mzo. de 2013
A=rand(1,6)
s='abcdef'
for k=1:numel(s)
assignin('base',s(k),A(k))
end
  6 comentarios
Alexander
Alexander el 13 de Mzo. de 2013
% generates function handle to bimodal gaussian distribution:
% f(X; A1, A2, x01, x02, sig1, sig2) = ...
% A1*exp( -(X-x01).^2 / (2*sig1^2) ) + A2*exp( -(X-x02).^2 / (2*sig2^2) )
% beta is the coefficient vector [A1,A2,x01,x02,sig1,sig2]
function f = bimodgauss(beta)
s={'A1','A2','x01','x02','sig1','sig2'};
for k=1:numel(s)
assignin('caller',s{k},beta(k))
end
f = @(X) A1*exp(-(X-x01).^2 / (2*sig1^2)) + A2*exp(-(X-x02).^2 / (2*sig2^2));

Iniciar sesión para comentar.

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by