【问题标题】:If Statement Matlab Function on SimulinkSimulink 上的 If 语句 Matlab 函数
【发布时间】:2014-08-08 14:59:37
【问题描述】:

我正在尝试制作自己的 Matlab 函数以在 Simulink 中使用,但没有成功。这是一个简单的 If 语句,有一个输入和三个输出值,都是整数,这里是代码:

function [ PWM,INA,INB ]  = VNH5019(in_Motor)
if in_Motor ==0
   INA=0;
   INB=0;
   PWM=0;
elseif in_Motor>0
    if in_Motor>255
    in_motor=255;
    end
      INA=1;
      INB=0;
      PWM=in_Motor;
elseif in_Motor<0
   if  in_Motor<-255
       in_motor=-255;
   end
   INA=0;
   INB=1;
   PWM=-in_Motor;
end

这里是错误:

Output argument 'PWM' is not assigned on some execution paths.

Function 'MATLAB Function' (#38.28.35), line 1, column 29:
"VNH5019"

【问题讨论】:

    标签: matlab function code-generation simulink


    【解决方案1】:

    尝试在 if 之前为变量赋值。 Simulink 需要始终在这种类型的块函数中定义值,并且在您的函数中似乎是,但编译器认为它们不是。因此,在任何 if 之前,请为您的输出分配一些值。

    它可能会起作用。

    【讨论】:

      【解决方案2】:

      您可能应该替换该行:

      elseif in_Motor<0
      

      使用简单的else

      【讨论】:

      • 如果这样行得通,如果因为这样你告诉编译器,肯定会有分配输出的点。可能这个解决方案会起作用,但是我认为用默认值初始化变量是一个好习惯。
      • @AnderBiguri 是的,我同意。出于这个原因,我赞成你的回答。
      猜你喜欢
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      • 2019-09-20
      • 1970-01-01
      • 2012-10-29
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多