具有 2 个变量和 1 个相关值的插值矩阵
Interpolating matrices with 2 variables and 1 dependent value
我正在分析感应电机,改变定子电流的频率和绝对值。由于 FEM 工具仅适用于电流输入,因此我需要在频率范围内改变电流以获得每个频率的恒定转矩的电流值。
为了生成网格,我使用了 2 个 for 循环:
外环设置电流。
内环根据所述电流改变频率,获得机器的扭矩,最后,附加矩阵,在单独的矩阵中添加当前定子电流、频率和扭矩。绘制它看起来像这样:
Example of the plot using the raw data
对于绘图,我使用了更小、更不精确的矩阵和相当任意的值:
I_S = [ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 ];
fre = [ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ];
tor = [ 0 0.1 0.3 0.5 0.7 1 1.5 2 2.6 3.3 0 1.1 1.3 1.5 1.7 2 2.5 3 3.6 4.3 0 2.1 2.3 2.5 2.7 3 3.5 4 4.6 5.3 ];
而 tor
在图中显示为颜色图。每个矩阵的长度都是30.
一次模拟大约需要20-30秒。因此,要获得精确的网格,FEM 工具需要几个小时才能生成。
我想在已知空间之间插入空间。
似乎要么是创建矩阵的方式有问题,要么是 Octave/MATLAB 的 interp*...-函数根本不适用于这种插值。
有没有办法从这种类型的矩阵中实现 mesh/grid-like 插值?我发现了很多以 x,y 作为变量,以 z 作为数学函数的例子,但很少有 3 linear/non-linear 矩阵。
您的数据需要采用网格形式,即二维:
// Known data
current = [0:2];
frequency = [0:9];
[current2D, frequency2D] = meshgrid(current,frequency);
torque2D = [ 0 0.1 0.3; 0.5 0.7 1; 1.5 2 2.6; 3.3 0 1.1; 1.3 1.5 1.7; 2 2.5 3; 3.6 4.3 0; 2.1 2.3 2.5; 2.7 3 3.5; 4 4.6 5.3 ];
// Interpolated data
currentToInterpolate = [0.5 1.5];
frequncyToInterpolate = [0.5 : 8.5];
[currentToInterpolate2D, frequencyToInterpolate2D] = meshgrid(currentToInterpolate,frequncyToInterpolate);
interpolatedTorque2D = interp2(current2D,frequency2D,torque2D,currentToInterpolate2D,frequencyToInterpolate2D);
我正在分析感应电机,改变定子电流的频率和绝对值。由于 FEM 工具仅适用于电流输入,因此我需要在频率范围内改变电流以获得每个频率的恒定转矩的电流值。
为了生成网格,我使用了 2 个 for 循环: 外环设置电流。 内环根据所述电流改变频率,获得机器的扭矩,最后,附加矩阵,在单独的矩阵中添加当前定子电流、频率和扭矩。绘制它看起来像这样: Example of the plot using the raw data 对于绘图,我使用了更小、更不精确的矩阵和相当任意的值:
I_S = [ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 ];
fre = [ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ];
tor = [ 0 0.1 0.3 0.5 0.7 1 1.5 2 2.6 3.3 0 1.1 1.3 1.5 1.7 2 2.5 3 3.6 4.3 0 2.1 2.3 2.5 2.7 3 3.5 4 4.6 5.3 ];
而 tor
在图中显示为颜色图。每个矩阵的长度都是30.
一次模拟大约需要20-30秒。因此,要获得精确的网格,FEM 工具需要几个小时才能生成。
我想在已知空间之间插入空间。
似乎要么是创建矩阵的方式有问题,要么是 Octave/MATLAB 的 interp*...-函数根本不适用于这种插值。
有没有办法从这种类型的矩阵中实现 mesh/grid-like 插值?我发现了很多以 x,y 作为变量,以 z 作为数学函数的例子,但很少有 3 linear/non-linear 矩阵。
您的数据需要采用网格形式,即二维:
// Known data
current = [0:2];
frequency = [0:9];
[current2D, frequency2D] = meshgrid(current,frequency);
torque2D = [ 0 0.1 0.3; 0.5 0.7 1; 1.5 2 2.6; 3.3 0 1.1; 1.3 1.5 1.7; 2 2.5 3; 3.6 4.3 0; 2.1 2.3 2.5; 2.7 3 3.5; 4 4.6 5.3 ];
// Interpolated data
currentToInterpolate = [0.5 1.5];
frequncyToInterpolate = [0.5 : 8.5];
[currentToInterpolate2D, frequencyToInterpolate2D] = meshgrid(currentToInterpolate,frequncyToInterpolate);
interpolatedTorque2D = interp2(current2D,frequency2D,torque2D,currentToInterpolate2D,frequencyToInterpolate2D);