这是我试图创建的程序(对Matlab来说很新)。 我有主程序使用翼型几何来计算压力分布,并在其他方程中使用压力分布。
到目前为止:我根据用户输入的序列号生成了NACA 4和5系列翼型的等式。 但是,我想要另一个选项让用户生成自己的翼型x和y坐标,我需要能够在程序中使用这些值。
function [xs]=FSP()
%closes all windows, clears everything
writeofile=0;
fprintf('\n');
fprintf('Enter option: 1= 4 series, 2=5 series 3= upload');
if ~nargin
option = input ('\n select option:');
if option ==1
FourDigit=input('\n Type in NACA 4 series: ');
alpha = input ('\n Type in angle of attack in degree: ');
elseif option ==2
FiveDigit= input('\n Type in NACA 5 series: ');
alpha = input ('\n Type in angle of attack in degree: ');
elseif option ==3
%
%
end
end
N=100; % Number of points generated.
if option == 1
[x,y]= Airfoil4 (N,N,FourDigit);
% [xmid,ymid,Cp]=HessSmithPanel (x,y,alpha);
% [xU,yU,CpU]=UpperSurface (xmid,ymid,Cp,N);
elseif option ==2
[x,y]= Airfoil5 (N,N,FiveDigit);
% [xmid,ymid,Cp]=HessSmithPanel (x,y,alpha);
% [xU,yU,CpU]=UpperSurface (xmid,ymid,Cp,N);
elseif option ==3
end
figure
plot (x,y);
axis([-.1 1.1 -.4 .4]);
这是目前正在为4和5系列工作的主程序的一部分,它获取数组中的x和y坐标并绘制它们以供将来使用。我需要数据收集的第三个选项与此类似。
这是NACA 5系列的一个例子
function [x,y]=Airfoil5(nU,nL,NACA)
xU=zeros(nU,1);
cU=zeros(nU,1);
dcU=zeros(nU,1);
betaU=zeros(nU,1);
xL=zeros(nL,1);
cL=zeros(nL,1);
dcL=zeros(nL,1);
betaL=zeros(nL,1);
L=floor(NACA/10000);
P=floor(NACA/1000)-L*100;
R=floor(NACA/100)-L*100-P*10;
XX=NACA-L*10000-P*1000-R*100;
maxt=XX/100;
xf=P/20;
Cli=3*L/20;
%cmax=cmax*.01;
%pcmax=pcmax*.1;
%maxt=maxt*.01;
syms m;
sol=solve(xf==m*(1-sqrt(m/3)),m);
m = double(real(sol(2)));
Q=(3*m-7*m^2+8*m^3-4*m^4)/sqrt(m*(1-m))-3/2*(1-2*m)*(pi/2-asin(1-2*m));
k1=6*Cli/Q;
if R == 0
for i=1:nU
xU(i)=.5*(1-cos(pi*(i-1)/nU));
end
for i=1:nL
xL(i)=.5*(1+cos(pi*(i-1)/nL));
end
tU=5*maxt*(.2969*sqrt(xU)-xU.*(.126+xU.*(.35372-xU.*(.2843-xU*.1015))));
tL=5*maxt*(.2969*sqrt(xL)-xL.*(.126+xL.*(.35372-xL.*(.2843-xL*.1015))));
for i=1:nU
if xU(i)<m
cU(i)=(k1/6)*(xU(i)*xU(i)*xU(i)-3*m*xU(i)*xU(i)+m^2*(3-m)*xU(i));
dcU(i)=(k1/6)*(3*xU(i)*xU(i)-6*m*xU(i)+m^2*(3-m));
else
cU(i)=k1*m^3*(1-xU(i))/6;
dcU(i)=-k1*m^3/6;
end
betaU=atan(dcU);
end
for i=1:nL
if xL(i)<m
cL(i)=(k1/6)*(xL(i)*xL(i)*xL(i)-3*m*xL(i)*xL(i)+m^2*(3-m)*xL(i));
dcL(i)=(k1/6)*(3*xL(i)*xL(i)-6*m*xL(i)+m^2*(3-m));
else
cL(i)=k1*m^3*(1-xL(i))/6;
dcL(i)=-k1*m^3/6;
end
betaL=atan(dcL);
end
else
k2=(3*(0.217-.15)^2-0.217^3)/(1-0.217)^3;
for i=1:nU
xU(i)=.5*(1-cos(pi*(i-1)/nU));
end
for i=1:nL
xL(i)=.5*(1+cos(pi*(i-1)/nL));
end
tU=5*maxt*(.2969*sqrt(xU)-xU.*(.126+xU.*(.35372-xU.*(.2843-xU*.1015))));
tL=5*maxt*(.2969*sqrt(xL)-xL.*(.126+xL.*(.35372-xL.*(.2843-xL*.1015))));
for i=1:nU
if xU(i)<m
cU(i)=(k1/6)*((xU(i)-m)^3-k2*(1-m)^3*xU(i)-m^3*xU(i)+m^3);
dcU(i)=(k1/6)*(3*(xU(i)-m)^2-k2*(1-m)^3-m^3);
else
cU(i)=(k1/6)*(k2*(xU(i)-m)^3-k2*(1-m)^3*xU(i)-m^3*xU(i)+m^3);
dcU(i)=(k1/6)*(3*k2*(xU(i)-m)^2-k2*(1-m)^3-m^3);
end
betaU=atan(dcU);
end
for i=1:nL
if xL(i)<m
cL(i)=(k1/6)*((xL(i)-m)^3-k2*(1-m)^3*xL(i)-m^3*xL(i)+m^3);
dcL(i)=(k1/6)*(3*(xL(i)-m)^2-k2*(1-m)^3-m^3);
else
cL(i)=(k1/6)*(k2*(xL(i)-m)^3-k2*(1-m)^3*xL(i)-m^3*xL(i)+m^3);
dcL(i)=(k1/6)*(3*k2*(xL(i)-m)^2-k2*(1-m)^3-m^3);
end
betaL=atan(dcL);
end
end
x=xL+tL.*sin(betaL);
y=cL-tL.*cos(betaL);
x=[x;xU-tU.*sin(betaU);x(1)];
y=[y;cU+tU.*cos(betaU);y(1)];
所以我需要第三个选项来开发类似NACA 5系列,并将文本文件中的数据存储到变量x和y中。
这是文本文件。
AG19
0.999992 0.000244
0.994067 0.000848
0.982082 0.002113
0.968544 0.003504
0.954708 0.004914
0.940826 0.006276
0.926943 0.007613
0.913056 0.008933
0.899168 0.010245
0.885282 0.011547
0.871396 0.012840
0.857515 0.014123
0.843633 0.015399
0.829754 0.016658
0.815876 0.017909
0.801995 0.019144
0.788118 0.020364
0.774240 0.021567
0.760358 0.022757
0.746480 0.023934
0.732598 0.025098
0.718714 0.026246
0.704832 0.027382
0.690952 0.028505
0.677070 0.029611
0.663191 0.030702
0.649316 0.031769
0.635436 0.032803
0.621559 0.033813
0.607686 0.034792
0.593811 0.035742
0.579936 0.036661
0.566066 0.037549
0.552198 0.038403
0.538328 0.039225
0.524462 0.040010
0.510601 0.040760
0.496741 0.041474
0.482880 0.042149
0.469025 0.042788
0.455177 0.043387
0.441328 0.043948
0.427484 0.044466
0.413649 0.044946
0.399815 0.045383
0.385986 0.045776
0.372169 0.046125
0.358355 0.046428
0.344545 0.046682
0.330750 0.046887
0.316965 0.047037
0.303185 0.047134
0.289421 0.047171
0.275674 0.047146
0.261933 0.047054
0.248213 0.046888
0.234514 0.046643
0.220830 0.046310
0.207177 0.045881
0.193554 0.045344
0.179962 0.044689
0.166424 0.043904
0.152931 0.042974
0.139504 0.041884
0.126159 0.040617
0.112901 0.039151
0.099774 0.037462
0.086793 0.035521
0.074020 0.033292
0.061500 0.030726
0.049351 0.027778
0.037754 0.024395
0.027090 0.020576
0.018069 0.016536
0.011377 0.012750
0.006933 0.009581
0.004065 0.007011
0.002186 0.004880
0.000960 0.003044
0.000235 0.001406
0.000001 -0.000094
0.000368 -0.001552
0.001471 -0.002908
0.003259 -0.004084
0.005777 -0.005206
0.009368 -0.006368
0.014713 -0.007619
0.022632 -0.008896
0.033028 -0.009988
0.044948 -0.010773
0.057612 -0.011265
0.070626 -0.011515
0.083847 -0.011575
0.097208 -0.011488
0.110664 -0.011286
0.124193 -0.010995
0.137773 -0.010634
0.151402 -0.010216
0.165062 -0.009753
0.178754 -0.009253
0.192471 -0.008724
0.206209 -0.008174
0.219965 -0.007607
0.233740 -0.007028
0.247527 -0.006440
0.261333 -0.005847
0.275149 -0.005250
0.288979 -0.004652
0.302827 -0.004054
0.316687 -0.003459
0.330560 -0.002868
0.344449 -0.002282
0.358351 -0.001705
0.372267 -0.001137
0.386195 -0.000582
0.400136 -0.000039
0.414079 0.000487
0.428014 0.000997
0.441936 0.001488
0.455848 0.001958
0.469754 0.002410
0.483648 0.002838
0.497536 0.003246
0.511417 0.003632
0.525297 0.003999
0.539171 0.004338
0.553041 0.004649
0.566907 0.004932
0.580771 0.005183
0.594629 0.005404
0.608483 0.005597
0.622333 0.005758
0.636177 0.005888
0.650015 0.005989
0.663852 0.006060
0.677688 0.006098
0.691521 0.006104
0.705354 0.006082
0.719189 0.006029
0.733027 0.005945
0.746863 0.005833
0.760702 0.005691
0.774544 0.005518
0.788385 0.005316
0.802230 0.005089
0.816081 0.004833
0.829932 0.004550
0.843784 0.004242
0.857640 0.003908
0.871495 0.003551
0.885353 0.003171
0.899212 0.002768
0.913070 0.002347
0.926931 0.001903
0.940790 0.001439
0.954652 0.000956
0.968488 0.000451
0.982076 -0.000064
0.994074 -0.000511
1.000008 -0.000710
文本文件通常包含翼型的名称,然后是x坐标和y坐标的列。我需要能够获取每个坐标并将它们保存在数组x和y变量中,就像我在airfoil5函数中一样。我还需要将FSP功能中的N变量更改为从翼型文本文件中输入的x-y坐标的数量。
任何帮助将不胜感激, 谢谢。
答案 0 :(得分:0)
我建议使用importdata
功能。您可以使用
data=importdata('/path/to/file/filename.txt', ' ', 1);
N=size(data,1);
x=data(:,1);
y=data(:,2);