Matlab Simulink中的行插值

Matlab Simulink中的行插值,matlab,block,interpolation,simulink,Matlab,Block,Interpolation,Simulink,我有一个41x8矩阵,我想在Simulink中用作源。源的输出应该是大小为8的行。数据需要在行之间插入。例如: X=[0; Z=[5 20; 2.5; 10 26; 5; 18 33; 7.5; 27 41; 10] 38 50] 存在与第一矩阵的41行逐行对应的41x1单调递增列向量,例如: X=[0; Z=[5 20; 2.5; 1

我有一个41x8矩阵,我想在Simulink中用作源。源的输出应该是大小为8的行。数据需要在行之间插入。例如:

X=[0;        Z=[5   20;
   2.5;         10  26;
   5;           18  33;
   7.5;         27  41;
   10]          38  50]
存在与第一矩阵的41行逐行对应的41x1单调递增列向量,例如:

X=[0;        Z=[5   20;
   2.5;         10  26;
   5;           18  33;
   7.5;         27  41;
   10]          38  50]
如果可行,需要在列之间插值三次样条插值。 我有一个与X列向量中的值相关的输入。 对于该示例矩阵,simulink模型在不同X值下的输出:

X=[5]        Z=[18 33]

X=[6]        Z=[25.096 39.32]
最后的Z值通过三次样条插值获得

到目前为止,我已经尝试在Simulink中使用MATLAB函数块和下一个代码,并使用From workspace块调用矩阵和向量。当我试图运行模拟时,出现了一个错误ocurr,它说X和Zi向量在函数interp1中的维数不相同

function [I] = fcn(A,X, Z)

%A: traget value for column vector
%X: 41X1 column vector
%Z: 41x8 matrix

I=zeros(1,8); %Just creating the row filled with zeros

for i=1:8
     I(i)=interp1(X,Z(:,i),A,'spline'); % Building the row interpolating at 
                                          % the A value that corresponds 
                                          % with the X1 column vector
end        

%the I column vector is an interpolated row from Z

end
你知道如何让它工作吗


PD:X是,Z值必须从Matlab的基本工作区读取。

代码中的X1是什么?它在任何地方都没有定义。还有,什么是Z1?你可能应该使用而不是MATLAB函数块。rayryeng:对不起,我只是修改了问题,因为函数写错了。X1和Z1现在是X和Z。am304:nDLookup表不提供列作为输出