getting rid of a loop

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

Image Analyst
Image Analyst 2012년 7월 26일
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.

댓글을 달려면 로그인하십시오.

답변 (2개)

Nirmal
Nirmal 2012년 7월 25일
편집: Nirmal 2012년 7월 25일

0 개 추천

b=[V(:,4) V(:,5) V(:,10) V(:,18)]
b will be what you want.

댓글 수: 2

joseph Frank
joseph Frank 2012년 7월 25일
No,
It is giving an error that index exceeds Matrix dimenssions.
V has only one column and in each row of this column I have 1x18 cells
Nirmal
Nirmal 2012년 7월 25일
change that V with X. I misread.

댓글을 달려면 로그인하십시오.

joseph Frank
joseph Frank 2012년 7월 26일
편집: joseph Frank 2012년 7월 26일

0 개 추천

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;

카테고리

도움말 센터File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

태그

질문:

2012년 7월 25일

Community Treasure Hunt

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

Start Hunting!

Translated by