Filter löschen
Filter löschen

dsearchn() Command is slowing down my algorithm, Any better Solution? MATLAB

3 Ansichten (letzte 30 Tage)
I am using the following code to calculate altitude.
Data = [Distance1',Gradient];
Result = Data(dsearchn(Data(:,1), Distance2), 2);
Altitude = -cumtrapz(Distance2, Result)/1000;
Distance 1 and Distance 2 has different size with same values so I am comparing them to get corresponding value of Gradient to use with Distance 2.
Just to execute these 3 lines the Matlab takes 12 to 15 seconds. Which slow down my whole algorithm.
Is there any better way I can perform above action without slowing down my algorithm?
  11 Kommentare
Bruno Luong
Bruno Luong am 27 Okt. 2018
Bearbeitet: Bruno Luong am 27 Okt. 2018
I wrote replace just the DSEARCH, not the rest.
If you want to get the same Result as with
Data = [Distance1',Gradient];
Result = Data(dsearchn(Data(:,1), Distance2), 2);
and Data is just temporary variable and you don' mind to trash it away after, then
Result = interp1(Distance1,Gradient,Distance2,'nearest');

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Bruno Luong
Bruno Luong am 27 Okt. 2018
Bearbeitet: Bruno Luong am 27 Okt. 2018
Replace
dsearchn(Data(:,1), Distance2)
by
interp1(Distance1,Distance2,'nearest');
If you want to get the same Result as with
Data = [Distance1',Gradient];
Result = Data(dsearchn(Data(:,1), Distance2), 2);
and Data is just temporary variable and you don' mind to trash it away after, then
Result = interp1(Distance1,Gradient,Distance2,'nearest');

Weitere Antworten (0)

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Produkte


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by