下記のようなコードを作りました。中身は1度でも1の入力がされると、その後は1の入力が続く仕組みとなっています。
これよりも簡便な関数もしくは、simulinkのブロック図がありましたら教えて頂けないでしょうか。
よろしくお願い致します。
clear;
aa = 0 : 0.01 : 10;
u = ones(1,numel(aa));
flg = zeros(1,numel(aa));
for x = 2 : 1 : 10002
u(x) = sin(deg2rad(x / 10));
if flg(x-1) == 1
flg(x) = 1;
else % flg == 0
if u(x) == 1
flg(x) = 1;
end
end
end
hold on
plot(flg);
plot(u);
hold off

 채택된 답변

Shoumei
Shoumei 2019년 8월 19일

0 개 추천

MATLABコードがあるのであれば、ラッチ回路部分はMATLAB Functionブロックに移植するのが良いと思います。
SIN波は外部から入力したとして、MATLAB Functionブロック内部のコードはこんな感じになります。
function y = fcn(u)
persistent flg
if isempty(flg)
flg = 0;
end
if flg == 1
flg = 1;
else
if u == 1
flg = 1;
end
end
y = flg;
Simulinkブロック線図で書くのであれば下図のようになります。
latch.png
latch_scope.png

댓글 수: 1

Ryo Shinohara
Ryo Shinohara 2019년 8월 20일
回答ありがとうございます。
参考にさせて頂きます。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Simulink でサポートされているハードウェア에 대해 자세히 알아보기

제품

릴리스

R2019a

질문:

2019년 8월 19일

댓글:

2019년 8월 20일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!