How can i speed up my function?
Afficher commentaires plus anciens
Hello everybody,
I'm trying to increase the performance of my Matlab function. Input is a table with the same columns as airfoil_update.
The function splits the X-Coordinates of one AeroDataId at the minimum of X/C and does this for every AeroDataId in the table. Airfoil, the input table, will have a size of 131123421x4. But the fourth column "Upper" is empty and should be filled up with a 1, if the coordinate belongs to the upper airfoil and 0, if it belongs to the lower airfoil.
Thank you very much in advance.
function [airfoil_update] = splitAirfoil(airfoil)
%% create table for upper and lower airfoil
airfoil_update=array2table(zeros(0,4),'VariableNames',{'AeroDataId','X_C','CP','Upper'});
%% vector with unique AeroDataIds
DataId_unique=unique(airfoil.AeroDataId);
for i=1:1:size(DataId_unique)
%% temp vector filled with every point of specific AeroDataId
disp(DataId_unique(i,:));
AeroDataId=airfoil(airfoil.AeroDataId==DataId_unique(i,:),:);
%% find the minimum of X/C
[~, min_idx]=min(AeroDataId.X_C);
%% every point with same ID before minimum -> lower_airfoil -> Upper =0
airfoil_new=AeroDataId(1:min_idx,:);
airfoil_new.Upper(:,:)=0;
airfoil_update=[airfoil_update; airfoil_new];
%% every point with same ID after minimum = upper_airfoil -> Upper =1
airfoil_new=AeroDataId(min_idx+1:end,:);
airfoil_new.Upper(:,:)=1;
%% add new rows
airfoil_update=[airfoil_update; airfoil_new];
end
end
4 commentaires
Daniel Ribeiro Gonçalves
le 8 Jan 2020
Well,
Besides avoid repeated lines, wicht I think you didn't , you can make your vectors and matrixes sparse, sympley like this:
sparse(airfoil_update);
sparse(airfoil_new);
and goes on...
What will do is basically squeeze out all the zeros in the matrixes and vectors
Gerrit
le 8 Jan 2020
Daniel Ribeiro Gonçalves
le 9 Jan 2020
They wont be deleted.. Its only for the matter of performance.. It will lower your program computacional time
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Performance and Memory dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!