Making Smoother the Curve fit to Airfoil data using cscvn function

조회 수: 12 (최근 30일)
Hello I am using the following code to fit a curve to the following data
% Get the coordinates of the airfoil - airfoiltools.com - http://airfoiltools.com/airfoil/details?airfoil=goe802-il
GOE802_DiscretePoints = readtable('GOE802_DiscretePoints.csv', 'NumHeaderLines', 1);
GOE802_DiscretePoints = GOE802_DiscretePoints{:, :};
% Get the x and y coordinates of the airfoil for the upper and lower surfaces
x_lower_original = GOE802_DiscretePoints(:, 1);
y_lower_original = GOE802_DiscretePoints(:, 2);
x_upper_original = GOE802_DiscretePoints(:, 3);
y_upper_original = GOE802_DiscretePoints(:, 4);
x_all = [x_lower_original; flip(x_upper_original)];
y_all = [y_lower_original; flip(y_upper_original)];
x = x_all';
y = y_all';
select = [1:17, 17, 19:34]; % Repeating trailing point to make a sharp corner there
x = x(select);
y = y(select);
curve = cscvn( [x; y] );
fnplt(curve)
axis equal
How do I make it smoother for example I would like to break this boundary into N points where N>>n, say N = 100,000.
This is especially needed at the front tip where it should be smooth but is currently sharp.
  댓글 수: 1
atharva aalok
atharva aalok 2022년 8월 28일
편집: atharva aalok 2022년 8월 29일
If Mr. John D Errico you are seeing this:
I am also trying to use your Interparc file from file exchange:
% Get the coordinates of the airfoil - airfoiltools.com - http://airfoiltools.com/airfoil/details?airfoil=goe802-il
GOE802_DiscretePoints = readtable('GOE802_DiscretePoints.csv', 'NumHeaderLines', 1);
GOE802_DiscretePoints = GOE802_DiscretePoints{:, :};
% Get the x and y coordinates of the airfoil for the upper and lower surfaces
x_lower_original = GOE802_DiscretePoints(:, 1);
y_lower_original = GOE802_DiscretePoints(:, 2);
x_upper_original = GOE802_DiscretePoints(:, 3);
y_upper_original = GOE802_DiscretePoints(:, 4);
x_all = [x_lower_original; flip(x_upper_original)];
y_all = [y_lower_original; flip(y_upper_original)];
x = x_all';
y = y_all';
select = [1:17, 19:34]; % Repeating trailing point to make a sharp corner there
x = x(select);
y = y(select);
xyint = interparc(5000,x,y,'spline');
figure(10);
axis equal
grid on
hold on
plot(x,y,'bo',xyint(:,1),xyint(:,2),'r-');
How do I get a sharp corner at the end?

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

채택된 답변

John D'Errico
John D'Errico 2022년 8월 28일
I saw your question. You don't need to direct a question at me.
However, it appears you are asking how to get a sharp corner at the END? Where, at x==1? You explicitly put that point in the middle of your curve, then used a spline to interpolate it.
There might appear to be two corners in that airfoil. One at x==1, and another between x=0.0125 and 0.025. There clearly is not a corner at x==0.
But at x == 1, the curve is not even continuous, with two distinct y values at x==1.
GOE802_DiscretePoints = readtable('GOE802_DiscretePoints.csv', 'NumHeaderLines', 1);
GOE802_DiscretePoints = GOE802_DiscretePoints{:, :};
x_all = [flip(GOE802_DiscretePoints(:, 3));GOE802_DiscretePoints(:, 1)];
y_all = [flip(GOE802_DiscretePoints(:,4));GOE802_DiscretePoints(:, 2)];
inddrop = @(n,ind) setdiff(1:n,ind);
xy = interparc(1000,x_all(inddrop(34,18)),y_all(inddrop(34,18)),'spline');
plot(xy(:,1),xy(:,2))
So what sharp corner might you have thought should be there?
  댓글 수: 3
atharva aalok
atharva aalok 2022년 8월 29일
I think I could go with the following solution:
Use the interparc function to make a finer discretization.
Fit a smoothing spline function to it.
Calculate at equally spaced x vector values.
Can this be done directly using the cscvn function by any chance?
atharva aalok
atharva aalok 2022년 8월 30일
After thiking about my above comment, I think its a horrible idea because then near the Leading Edge (x == 0) there would be way lesser points discretizing the curve since the slop is higher at that point than at other locations on the airfoil. Whereas, it should be the other way there should be way more points at x == 0 because of the highly curved nature (Lower radius of curvature).

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Spline Postprocessing에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by