具有2个变量和1个从属值的插值矩阵

时间:2019-04-17 22:34:29

标签: matlab octave interpolation

我正在分析一个感应电动机,它改变了定子电流的频率和绝对值。由于FEM-Tool仅适用于电流输入,因此我需要在整个频率上变化电流,以获得每个频率下恒定转矩的电流值。

要生成网格,我使用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工具需要几个小时才能生成。

我想在已知空格之间插入空格。

似乎不是创建矩阵的方法就是问题,还是interp * ...- Octave / MATLAB的功能根本不适用于这种插值。

是否有一种方法可以从这种类型的矩阵中实现类似于网格/网格的插值?我发现了很多示例,其中x,y作为变量,z作为数学函数,但很少有3个线性/非线性矩阵。

1 个答案:

答案 0 :(得分:0)

您的数据必须为网格形式,即2D:

// 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);