![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1205093/image.png)
Problem passing sine wave through if statement
1 次查看(过去 30 天)
显示 更早的评论
Hi,
To see the output of an if statement over time, I wanted to pass a sine wave as input into "if block" and display it on the scope. Unfortunately, I cannot run the program since I keep receiving an error which says:
"Port 1 of 'Loops_in_Simulink/If statement' can only be connected to an action subsystem and may not be connected to more than one action subsystem".
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1204478/image.png)
However, as seen from the block diagram, there is only one input which is the sine wave. This simulink program is not a homework task. Could someone inform me what I am doing wrong? Thanks in advance.
0 个评论
采纳的回答
Paul
2022-11-23
Hi Matthew,
The "Port 1" referenced in the error message is the first output port, not the input port. All output ports from the If block have to feed If-Action subsytems, and the outputs of those have go through a Merge block. The If and If-Action blocks implement this pseudocode:
IF cond1 Then
Action1
ElseIF cond2 Then
Action 2
Etc.
Else
ActionElse
EndIF
The model in the Question is missing the Action for the conditions.
I think the model was trying to implement functionality similar to this model:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1205093/image.png)
Here, the top If-Action system outputs 1 and the bottom outputs -1. The If-Action subsystems can also accept inputs.
Of course, this model could be more easily implemented by sending the output of the Sine block into a Sign block, but I thought it would be worthwhile to illustrate how the If/If-Action works.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Simulink Functions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!