# How to quickly find the first NaN?

조회 수: 36(최근 30일)
Serbring 2019년 10월 14일
편집: Walter Roberson 2019년 10월 14일
Hi all,
I am converting more than 100GB of .ASC CAN BUS data. The algorithm is pretty slow due to the fact there are struct data inside a struct data. Below you will find a basic example of my code. The line that makes it pretty slow is the following because it is looped more than a million of times.
Is there a faster way to find the first NaN element where I can assign the value found in the struct? Maybe, I can speed up the code in another way?
Best regards
SigNames={'s1','s2','s3','s4','s5'; 'a1','a1','a1','a2','a2'};
MessLength=40;
for i=1:2:MessLength
messageStruct(i).Name='a1';
messageStruct(i).Signals.s1=1;
messageStruct(i).Signals.s2=2;
messageStruct(i).Signals.s3=3;
end
for i=2:2:MessLength
messageStruct(i).Name='a2';
messageStruct(i).Signals.s4=4;
messageStruct(i).Signals.s5=5;
end
UniqueMessFound=unique({messageStruct.Name});
UniqueMessageCount=countcats(categorical({messageStruct.Name},UniqueMessFound));
for iSig=1:length(SigNames(1,:))
Sigs{iSig}=NaN(UniqueMessageCount(strcmp(UniqueMessFound,SigNames{2,iSig})),1);
end
for i=1:MessLength
Sig=fieldnames(messageStruct(i).Signals);
for j=1:length(Sig2Sel)
end
end

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

### 채택된 답변

Walter Roberson 2019년 10월 14일
편집: Walter Roberson 2019년 10월 14일
You could adapt https://www.mathworks.com/matlabcentral/fileexchange/24641-vectorized-find-with-first-option to do the nan testing.

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

### 추가 답변(1개)

Mir Amid Hashemi 2019년 10월 14일
편집: Mir Amid Hashemi 2019년 10월 14일
Hi,
I put MessLength to 40000. I would think the bigger worry is line 23 with intersection. Isn't it?
If you are using it to find signals in a few SigNames can't you make a faster line there?
I'm sorry I'm dodging the question maybe.
##### 댓글 수: 1표시숨기기 없음
Serbring 2019년 10월 14일
Thanks Mir Amid for your answer. Actually, I am not using the intersect function embedded function, but a custom one that avoid array sorting. So, the bottle neck was the intersect function, but now, it is that line.

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

### 범주

Find more on Data Type Conversion 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