Matlab Simulink中的行插值
我有一个41x8矩阵,我想在Simulink中用作源。源的输出应该是大小为8的行。数据需要在行之间插入。例如: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
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表不提供列作为输出