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

1 visualizzazione (ultimi 30 giorni)
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.

Risposta accettata

Walter Roberson
Walter Roberson il 13 Mar 2013
Modificato: Walter Roberson il 13 Mar 2013
Acell = num2cell(A);
[a,b,c,d,e,f] = deal(Acell{:}); %older MATLAB
[a,b,c,d,e,f] = Acell{:}; %newer MATLAB
  1 Commento
Alexander
Alexander il 13 Mar 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.

Accedi per commentare.

Più risposte (1)

Azzi Abdelmalek
Azzi Abdelmalek il 13 Mar 2013
Modificato: Azzi Abdelmalek il 13 Mar 2013
A=rand(1,6)
s='abcdef'
for k=1:numel(s)
assignin('base',s(k),A(k))
end
  6 Commenti
Alexander
Alexander il 13 Mar 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));

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by