interpX1(第 40 行,第 10 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
interpX2(第 41 行,第 10 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
interpY1(第 42 行,第 10 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
interpX3(第 44 行,第 10 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
interpX4(第 45 行,第 10 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
interpY2(第 46 行,第 10 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
interpZ1(第 48 行,第 10 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
interpX5(第 50 行,第 10 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
interpX6(第 51 行,第 10 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
interpY3(第 52 行,第 10 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
interpX7(第 54 行,第 10 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
interpX8(第 55 行,第 10 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
interpY4(第 56 行,第 10 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
interpZ2(第 58 行,第 10 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
插值(第 64 行,第 29 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
x_in(第 71 行,第 8 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
y_in(第 72 行,第 8 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
z_in(第 73 行,第 8 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
w_in(第 74 行,第 8 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
interpolatedValue(第 76 行,第 8 列:erstellte_Bauteile.QuadriLinearInterpolation)
预期其中之一: “;” “,” “]” “)” “}” “受约束” “注解” “如果” 字符串字面量 操作员 “为了” “环形” “然后” “别的” “:” “(” “[” “。”
已发布错误。
我不知道如何解决这些错误。
model CombinedInterpolationModel
model QuadriLinearInterpolation
parameter Real matrix[:,:,:,:]; // Die 4D-Matrix
parameter Integer X;
parameter Integer Y;
parameter Integer Z;
parameter Integer W;
Real x_in(start=0);
Real y_in(start=0);
Real z_in(start=0);
Real w_in(start=0);
output Real interpValue;
protected
Integer i;
Integer j;
Integer k;
Integer l;
Real wx;
Real wy;
Real wz;
Real ww;
algorithm
// Finde die nächstliegenden Indizes
i := floor(x_in);
j := floor(y_in);
k := floor(z_in);
l := floor(w_in);
// Berechne die Gewichtungsfaktoren
wx := x_in - i;
wy := y_in - j;
wz := z_in - k;
ww := w_in - l;
// Führe die lineare Interpolation in jeder Dimension durch
Real interpX1 = (1 - wx) * matrix[i, j, k, l] + wx * matrix[i+1, j, k, l];
Real interpX2 = (1 - wx) * matrix[i, j+1, k, l] + wx * matrix[i+1, j+1, k, l];
Real interpY1 = (1 - wy) * interpX1 + wy * interpX2;
Real interpX3 = (1 - wx) * matrix[i, j, k+1, l] + wx * matrix[i+1, j, k+1, l];
Real interpX4 = (1 - wx) * matrix[i, j+1, k+1, l] + wx * matrix[i+1, j+1, k+1, l];
Real interpY2 = (1 - wy) * interpX3 + wy * interpX4;
Real interpZ1 = (1 - wz) * interpY1 + wz * interpY2;
Real interpX5 = (1 - wx) * matrix[i, j, k, l+1] + wx * matrix[i+1, j, k, l+1];
Real interpX6 = (1 - wx) * matrix[i, j+1, k, l+1] + wx * matrix[i+1, j+1, k, l+1];
Real interpY3 = (1 - wy) * interpX5 + wy * interpX6;
Real interpX7 = (1 - wx) * matrix[i, j, k+1, l+1] + wx * matrix[i+1, j, k+1, l+1];
Real interpX8 = (1 - wx) * matrix[i, j+1, k+1, l+1] + wx * matrix[i+1, j+1, k+1, l+1];
Real interpY4 = (1 - wy) * interpX7 + wy * interpX8;
Real interpZ2 = (1 - wz) * interpY3 + wz * interpY4;
// Führe die finale Interpolation durch
interpValue := (1 - ww) * interpZ1 + ww * interpZ2;
end QuadriLinearInterpolation;
QuadriLinearInterpolation interpolation(
matrix = { 10,10,10,10/* Eingabe der Matrix */ },
X = 2,
Y = 2,
Z = 3,
W = 4);
Real x_in(start=0.5);
Real y_in(start=0.5);
Real z_in(start=1.5);
Real w_in(start=2.5);
Real interpolatedValue;
equation
// Benutze das Interpolation model
x_in = 0.5; // input values
y_in = 0.5;
z_in = 1.5;
w_in = 2.5;
// Verwendung interpolation model
interpolatedValue = interpolation.interpValue;
end CombinedInterpolationModel;
不能在算法部分声明变量。我将声明移至受保护的部分。请注意,虽然可以解析模型,但除非您为其提供适当的 4D 矩阵,否则它不会起作用,{10, 10, 10, 10} 只是一个 1 维向量。如果您希望这些成为矩阵的维度,那么您需要将它们设置为参数,并在定义插值分量时修改它们(例如,就像对 X 所做的那样)。或者直接使用
matrix = fill(0, 10, 10, 10, 10)
。
model CombinedInterpolationModel
model QuadriLinearInterpolation
parameter Real matrix[:,:,:,:]; // Die 4D-Matrix
parameter Integer X;
parameter Integer Y;
parameter Integer Z;
parameter Integer W;
Real x_in(start=0);
Real y_in(start=0);
Real z_in(start=0);
Real w_in(start=0);
output Real interpValue;
protected
Integer i;
Integer j;
Integer k;
Integer l;
Real wx;
Real wy;
Real wz;
Real ww;
Real interpX1;
Real interpX2;
Real interpY1;
Real interpX3;
Real interpX4;
Real interpY2;
Real interpZ1;
Real interpX5;
Real interpX6;
Real interpY3;
Real interpX7;
Real interpX8;
Real interpY4;
Real interpZ2;
algorithm
// Finde die nächstliegenden Indizes
i := floor(x_in);
j := floor(y_in);
k := floor(z_in);
l := floor(w_in);
// Berechne die Gewichtungsfaktoren
wx := x_in - i;
wy := y_in - j;
wz := z_in - k;
ww := w_in - l;
// Führe die lineare Interpolation in jeder Dimension durch
interpX1 := (1 - wx) * matrix[i, j, k, l] + wx * matrix[i+1, j, k, l];
interpX2 := (1 - wx) * matrix[i, j+1, k, l] + wx * matrix[i+1, j+1, k, l];
interpY1 := (1 - wy) * interpX1 + wy * interpX2;
interpX3 := (1 - wx) * matrix[i, j, k+1, l] + wx * matrix[i+1, j, k+1, l];
interpX4 := (1 - wx) * matrix[i, j+1, k+1, l] + wx * matrix[i+1, j+1, k+1, l];
interpY2 := (1 - wy) * interpX3 + wy * interpX4;
interpZ1 := (1 - wz) * interpY1 + wz * interpY2;
interpX5 := (1 - wx) * matrix[i, j, k, l+1] + wx * matrix[i+1, j, k, l+1];
interpX6 := (1 - wx) * matrix[i, j+1, k, l+1] + wx * matrix[i+1, j+1, k, l+1];
interpY3 := (1 - wy) * interpX5 + wy * interpX6;
interpX7 := (1 - wx) * matrix[i, j, k+1, l+1] + wx * matrix[i+1, j, k+1, l+1];
interpX8 := (1 - wx) * matrix[i, j+1, k+1, l+1] + wx * matrix[i+1, j+1, k+1, l+1];
interpY4 := (1 - wy) * interpX7 + wy * interpX8;
interpZ2 := (1 - wz) * interpY3 + wz * interpY4;
// Führe die finale Interpolation durch
interpValue := (1 - ww) * interpZ1 + ww * interpZ2;
end QuadriLinearInterpolation;
QuadriLinearInterpolation interpolation(
matrix = { 10,10,10,10/* Eingabe der Matrix */ },
X = 2,
Y = 2,
Z = 3,
W = 4);
Real x_in(start=0.5);
Real y_in(start=0.5);
Real z_in(start=1.5);
Real w_in(start=2.5);
Real interpolatedValue;
equation
// Benutze das Interpolation model
x_in = 0.5; // input values
y_in = 0.5;
z_in = 1.5;
w_in = 2.5;
// Verwendung interpolation model
interpolatedValue = interpolation.interpValue;
end CombinedInterpolationModel;