在simulink错误中使用matlab函数
Using matlab function in simulink error
我是 Simulink 新手,但我需要使用 matlab 函数。
我创建了一个 "MATLAB Function1" 块,其中包含一个输入(来自另一个块的时间信号)和一个输出(三个信号包裹在 Scope 块中显示的矩阵中)。
这里是matlab函数块中的代码:
function outputSignal = myFunction(input_signal)
coder.extrinsic('lsim');
time = [1:1:length(input_signal)];
k_dia = [19.5 13 9.9];
k_dia = k_dia*10^-3;
outputSignal = zeros(length(time), length(k_dia));
for j = 1:length(k_dia)
A = [-k_dia(j) 0; k_dia(j) -k_dia(j)];
B = [1 0]';
C = [1 1];
D = 0;
sistem = feval('ss', A, B, C, D);
outputSignal(:,j) = lsim(sistem, input_signal, time);
end
end
之前由于代码生成问题,我在使用函数 "ss" 和 "lsim" 时遇到问题,但我应该使用 feval 和 coder.extrinsic 解决它们。现在我有以下错误:
When simulating the response to a specific input signal, the input data U must be a matrix
of numeric values with at least two rows (samples) and without any NaN or Inf.
我不明白问题是否仍然出在这些函数上,或者我是否在如何在 simulink 中使用 matlab 函数时犯了错误。
编辑:我知道问题是因为 lsim 需要一个至少长度为 2 的 input_signal,而我的系统在每个时间步都为一个单一值的函数提供输入。因此,如果时间为 10 步并且从前一个块生成的一系列值是 [1 2 3 4 5 6 7 8 9 10],我想将其作为函数的输入:
- [1] 在第 1 步,
- [1 2] 在第 2 步,
- [1 2 3] 在第 3 步,
....
- [1 2 3 4 5 6 7 8 9 10] 在第 10 步。
当然,由于 lsim 不能使用一个值,因此在第 1 步我可以使用默认输出值。
我想我需要一个块来记住时间步长中发生的事情
之前,类似于 Scope 块但有输出。
由于您的系统是时不变的,您可以创建三个独立的状态 space 系统,每个系统具有不同的参数值矩阵,并提供一个包含三个分量的向量作为输入信号,我将其留空因为我不知道你想从哪里发送。
我是 Simulink 新手,但我需要使用 matlab 函数。
我创建了一个 "MATLAB Function1" 块,其中包含一个输入(来自另一个块的时间信号)和一个输出(三个信号包裹在 Scope 块中显示的矩阵中)。
这里是matlab函数块中的代码:
function outputSignal = myFunction(input_signal)
coder.extrinsic('lsim');
time = [1:1:length(input_signal)];
k_dia = [19.5 13 9.9];
k_dia = k_dia*10^-3;
outputSignal = zeros(length(time), length(k_dia));
for j = 1:length(k_dia)
A = [-k_dia(j) 0; k_dia(j) -k_dia(j)];
B = [1 0]';
C = [1 1];
D = 0;
sistem = feval('ss', A, B, C, D);
outputSignal(:,j) = lsim(sistem, input_signal, time);
end
end
之前由于代码生成问题,我在使用函数 "ss" 和 "lsim" 时遇到问题,但我应该使用 feval 和 coder.extrinsic 解决它们。现在我有以下错误:
When simulating the response to a specific input signal, the input data U must be a matrix
of numeric values with at least two rows (samples) and without any NaN or Inf.
我不明白问题是否仍然出在这些函数上,或者我是否在如何在 simulink 中使用 matlab 函数时犯了错误。
编辑:我知道问题是因为 lsim 需要一个至少长度为 2 的 input_signal,而我的系统在每个时间步都为一个单一值的函数提供输入。因此,如果时间为 10 步并且从前一个块生成的一系列值是 [1 2 3 4 5 6 7 8 9 10],我想将其作为函数的输入:
- [1] 在第 1 步,
- [1 2] 在第 2 步,
- [1 2 3] 在第 3 步, ....
- [1 2 3 4 5 6 7 8 9 10] 在第 10 步。
当然,由于 lsim 不能使用一个值,因此在第 1 步我可以使用默认输出值。
我想我需要一个块来记住时间步长中发生的事情 之前,类似于 Scope 块但有输出。
由于您的系统是时不变的,您可以创建三个独立的状态 space 系统,每个系统具有不同的参数值矩阵,并提供一个包含三个分量的向量作为输入信号,我将其留空因为我不知道你想从哪里发送。