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

1 Ansicht (letzte 30 Tage)
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.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 13 Mär. 2013
Bearbeitet: Walter Roberson am 13 Mär. 2013
Acell = num2cell(A);
[a,b,c,d,e,f] = deal(Acell{:}); %older MATLAB
[a,b,c,d,e,f] = Acell{:}; %newer MATLAB
  1 Kommentar
Alexander
Alexander am 13 Mär. 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Azzi Abdelmalek
Azzi Abdelmalek am 13 Mär. 2013
Bearbeitet: Azzi Abdelmalek am 13 Mär. 2013
A=rand(1,6)
s='abcdef'
for k=1:numel(s)
assignin('base',s(k),A(k))
end
  6 Kommentare
Alexander
Alexander am 13 Mär. 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));

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Stair Plots finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by