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

4 vues (au cours des 30 derniers jours)
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.

Réponse acceptée

Walter Roberson
Walter Roberson le 13 Mar 2013
Modifié(e) : Walter Roberson le 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 commentaire
Alexander
Alexander le 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.

Connectez-vous pour commenter.

Plus de réponses (1)

Azzi Abdelmalek
Azzi Abdelmalek le 13 Mar 2013
Modifié(e) : Azzi Abdelmalek le 13 Mar 2013
A=rand(1,6)
s='abcdef'
for k=1:numel(s)
assignin('base',s(k),A(k))
end
  6 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 13 Mar 2013
Post your function
Alexander
Alexander le 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));

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by