How can i speed up my function?
古いコメントを表示
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 件のコメント
Daniel Ribeiro Gonçalves
2020 年 1 月 8 日
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
2020 年 1 月 8 日
Daniel Ribeiro Gonçalves
2020 年 1 月 9 日
They wont be deleted.. Its only for the matter of performance.. It will lower your program computacional time
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Airfoil tools についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!