getting rid of a loop

1 view (last 30 days)
joseph Frank
joseph Frank on 25 Jul 2012
Hi,
I have a cell array X which has around 1 million rows. each row has a 1x18 cell in it. I want to select columns 4,5,10,18 from each row. To do so I am running a loop v = regexp( X, ',', 'split'); ncol=[4 5 10 18];%numeric columns v2=nan(length(v),length(ncol));% numeric variables empty matrix
for j=1:length(v)
v0=[v{j,1}];
v2(j,1:length(ncol))=str2double(v0(1,ncol));
end
end
is it possible to avoid the loop and select columns 4,5,10,18 of each row of X?
  1 Comment
Image Analyst
Image Analyst on 26 Jul 2012
Edit your question. Highlight the code part of the question. Click the "{} Code" box above to format it so that it looks like a regular program.

Sign in to comment.

Answers (2)

Nirmal
Nirmal on 25 Jul 2012
Edited: Nirmal on 25 Jul 2012
b=[V(:,4) V(:,5) V(:,10) V(:,18)]
b will be what you want.
  2 Comments
Nirmal
Nirmal on 25 Jul 2012
change that V with X. I misread.

Sign in to comment.


joseph Frank
joseph Frank on 26 Jul 2012
Edited: joseph Frank on 26 Jul 2012
Thanks Nirmal for your efforts but still it doesn't work. Just in case my question wasn't clear I will rephrase it here
X has the following format:is 00846UAB7,A.GB,A,07/01/2002,11:10:26,T,500000,101.84,2.21429,000,@,,,101.84,2.21429,101.84,2.21429,101.84 v = regexp( X, ',', 'split');
to obtain v=
<1x18 cell>
... for 1 million rows.
I want a matrix v2 that consists of columns 4 ,5,10 and 18 without running a loop/ I used in my initial codes v2=str2double(v0(1,ncol)); where v0 is a row obtained as :
for j=1:length(v)
v0=[v{j,1}];
v2(j,1:length(ncol))=str2double(v0(1,ncol));
end
end
from the loop descibed in the intial post;

Categories

Find more on Multidimensional Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by