Angesichts dieser Tabelle, die ich aus einem Anhang in einem Lehrbuch kopiert habe, möchte ich für eine bestimmte Variable interpolieren dann den Wert in eine Textdatei drucken. Interpolation für mehrere Werte
Anstatt das Programm mehrmals zu interpolieren, um mehr als eine Variable zu interpolieren, möchte ich eine Liste von Temperaturen aufschreiben, für die interpoliert werden soll. Zum Beispiel ist der Bereich i für interpolieren will:
[50.5 62.4 79.78]
Wenn ich also einen Bereich, in dem Programm definieren, wie kann ich Schleife die Funktion, so dass es für jeden interpoliert der gegebenen Temperaturen und dann drucken sie in einer Textdatei? Im folgenden Code habe ich meinen ursprünglichen Code geschrieben, den ich vor ein paar Monaten geschrieben habe. Ich möchte manipulieren diese so dass ich auf einmal für mehrere Werte interpolieren:
clear all
%Format Long is used to ensure the maximum amount of displayed digits%
format long g
%A prompt is used to enter the name of the file name that will be used for interpolation%
prompt='Please Enter the Exact Name of the File Being Interpolated: ';
File_Name= input(prompt,'s');
%File is read and distibuted in 1X1 Matrices with the corresponding variable%
[T, K, p, a, Pr] = textread(File_Name, '%f%f%f%f%f','headerlines' ,4);
%Prompt to ask user for the variable to interpolate%
prompt2='Please Enter the Variable You Wish To Interpolate (T,K,p,a,Pr): ';
VarIn= input(prompt2);
prompt3='Please Enter the Value of Interpolation: ';
Val= input(prompt3);
prompt4='Please Enter the Desired Output Variable: ';
VarOut= input(prompt4);
%If statement used when value is out of the range%
if Val<VarIn(1,1)
disp('Error: The inputted value is out of range.')
elseif Val>VarIn(size(VarIn,1),1)
disp('Error: The inputted value is out of range.')
else
%The for statement is used to make sure the loop is independent of the matrix size%
for i= 1:size(VarIn,1)
if Val<VarIn(i+1,1)
%Interpolation Formula%
Y=((VarOut(i+1,1)-VarOut(i,1))/(VarIn(i+1,1)-VarIn(i,1)))*(Val-VarIn(i,1))+VarOut(i,1);
answer=Y;
%Display Answer%
fprintf('The Interpolated value is: %f\n',answer)
break
end
end
end
Wenn die Daten in einer Matrix gespeichert, die aus dem Screenshot eine '4x5' Matrix ist, dann können Sie Ihre Frage vereinfacht werden als: führe die gleiche Operation für jede Spalte der Matrix durch, außer dass die erste Spalte ein "x" Wert ist, auf dem die Funktionen definiert sind. – Yvon