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 131123421×4. 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]; endend

## Best Answer