2016-11-18 12 views
0

Matlabでこのコードを使用して、エアフォイルプロファイルを取得し、別のプログラムでプロファイルをプロットする際に、より滑らかな曲線を得る。私はこれを実行するとMatlabで変数を明確に定義しているにも関わらず未定義の変数または関数のエラーが発生し続ける

clear 
%reading an external data file 
fid = fopen('NACA0015.txt'); 
a = fscanf(fid,'%g %g',[2 inf]); % It has two rows now. 
a = a'; % matrix transpose 

n = input('200')  %e.g., n=35 

for i=1:n 
    for j=1:2 
     fprintf('%12.7f',a(i,j)); %a(i,1) is first column, a(i,2) is 2nd col 
    end 
    fprintf('\n'); 
end 
fclose(fid); 

for i=1:n 
    x(i)=a(i,1);  %x , y vectors 
    y(i)=a(i,2); 
end 

% use spline to create more points 

xx=0:0.01:1  % e.g., step =0.01 (number of points = (1-0)/0.01=100) 
yy = spline(x,y,xx);  % xx and yy are new generated values of Naca0012 

fprintf('\n print spline values \n'); 

plot(xx,yy,'ro')  
hold on 
plot(x,y,'*') 

私はエラー

未定義の関数や変数 'X' を取得します。

reading_external_data_and_spline(行26)のエラー yy =スプライン(x、y、xx); %xxのyyは、私はx変数が明確にコード内で定義されている場合、これは動作していない理由として完全な損失で午前NACA0012

の新しい生成された値であり、誰かがこの

+2

私は 'n'が' 0'なので、 '1'0は空の配列を生成するので、' x'を生成するループは実行されません。 – Suever

+3

さらに、入力を与えずにEnterキーを押すと、 'input'は空の行列を返します。 '1:[]'から反復しようとすると、 '1:(1未満の任意の数)'と同じように 'x'が決して初期化されないことを意味します。 – excaza

+0

私はそれを実行するとコマンドコンソールに200を表示してからEnterを押して入力が提供されているので、それは問題ではないと思う – tribo32

答えて

3

それだと私を助けることができるしてくださいどのようにinputを使用している。 inputの引数はデフォルト値ではなく、プロンプトのテキストです。コマンドをコンソールに入力してEnterキーを押すと、次のようになります。

>> n = input('200') 
200 

n = 

    [] 

>> 

入力はデフォルトを受け入れません。あなたが本当にデフォルトの回答との対話プロンプトを持っているしたい場合は、inputdlgをしたい:

answer = inputdlg('Enter a number of lines to parse', 'n', 1, '200'); 
n = str2double(answer); 

ノートinputdlg常に戻っテキストなので、あなたは数に変換する必要があります。

関連する問題