Path: news.mathworks.com!not-for-mail
From: <HIDDEN>
Newsgroups: comp.soft-sys.matlab
Subject: Re: Basic Matlab Question
Date: Tue, 17 Nov 2009 00:25:05 +0000 (UTC)
Organization: Emo Labs
Lines: 29
Message-ID: <hdsqh1$flv$1@fred.mathworks.com>
References: <hdso7p$sh5$1@fred.mathworks.com>
Reply-To: <HIDDEN>
NNTP-Posting-Host: webapp-02-blr.mathworks.com
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Trace: fred.mathworks.com 1258417505 16063 172.30.248.37 (17 Nov 2009 00:25:05 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Tue, 17 Nov 2009 00:25:05 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 1212210
Xref: news.mathworks.com comp.soft-sys.matlab:585626


"James Carter" <jimctr@msn.com> wrote in message <hdso7p$sh5$1@fred.mathworks.com>...
> I have a 32 x 1300 2D array, lets call it S.  I know I can pick off a particular row with the following argument: A = S(1,:); which gives me a 1 x 1300 array from the first 
> row of the 2D array.  I want every row assigned to a new indexed array, so I would start off with
> 
> for n = 1:rows
> A(n) = S(n,:);
> end
> 
> This doesn't work because of a dimensional mismatch.   I'm not really trying to define
> a dimension but simply declare a unique identifier.   How am I able to assign rows 
> such that I can put them in A(1), A(2), etc., all with the dimension 1 x 1300.  
> 
> Thanks!

By definition A will be multidimensional since you have A(x) and each A(x) has a length of 1300.

If you need 1 x 1300 vectors you could use a unique name, i.e. A1=..., A2=...

for n = 1:rows
  q=['A' num2str(n) '= S(', num2str(n), ',:);'];
  eval(q);
end

or maybe use a cell array where each cell contains a 1x1300 array

c=cell(32,1);
for n = 1:rows
  c{n}=S(n,:);
end