我是靠谱客的博主 自觉镜子,最近开发中收集的这篇文章主要介绍matlab中使用错误信息,在simulink错误中使用matlab函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我是Simulink的新手,但我需要使用matlab函数。

我创建了一个带有一个输入(来自另一个块的时间信号)和一个输出(包含在Scope块中显示的矩阵中的三个信号)的“MATLAB Function1”块。

这里是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我可以使用默认输出值。

我想我需要一个能够记忆时间步骤中发生的事情的区块

之前,像范围块,但有一个输出。

最后

以上就是自觉镜子为你收集整理的matlab中使用错误信息,在simulink错误中使用matlab函数的全部内容,希望文章能够帮你解决matlab中使用错误信息,在simulink错误中使用matlab函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部