comet(プロット)の停止、再生、逆再生方法
9 ビュー (過去 30 日間)
古いコメントを表示
matlabのプロットのタブにcometがあるのですが、このプロット方法は再生のような処理ができるのですが、停止や逆再生はできるのでしょうか。 また、cometではなくても別のもので上記の処理ができるものがありましたら教えていただけませんか。ちなみに三次元でcomet3(x,y,z)のように三次元で処理しています。
1 件のコメント
michio
2017 年 1 月 11 日
もしインタラクティブに(再生ボタン・停止ボタン・逆再生ボタンなどで)再生を操作したい場合は、GUIDE や App Designer で独自のGUIを作成するという方法もありますが、逆再生だけであれば KSSVさんが回答されているようにデータを逆順に並べて comet3 を実行するのもありですね。
採用された回答
Jiro Doke
2017 年 1 月 11 日
編集済み: Jiro Doke
2017 年 1 月 11 日
comet にはユーザーが割り込んで停止させたり逆再生させたりする機能がついていないので、自分で作るしかありません。ドキュメンテーションに様々なサンプルとかがあるのでご覧下さい。
参考にまで、こういう感じでキーボードを使った操作をさせることができます。
function animExample(x,y,t)
% Example:
%
% t = -10*pi:pi/250:10*pi;
% x = (cos(2*t).^2).*sin(t);
% y = (sin(2*t).^2).*cos(t);
% animExample(x,y,t)
% キーボードでアニメーションを操作
figure('WindowKeyPressFcn',@animFrame)
% 空のグラフを作成
hLine = plot3(nan,nan,nan);
title('Press ← → ↑ ↓')
hFrameText = uicontrol('Style','Text','String','Frame:');
axis([min(x) max(x) min(y) max(y) min(t) max(t)])
frm = 1;
function animFrame(obj,eventdata)
% 矢印キーによってフレームを移動
switch eventdata.Key
case 'rightarrow' % 1 フレームずつ進む
frm = min(frm+1,length(t));
case 'leftarrow' % 1 フレームずつ戻る
frm = max(frm-1,1);
case 'uparrow' % 10 フレームずつ進む
frm = min(frm+10,length(t));
case 'downarrow' % 10 フレームずつ戻る
frm = max(frm-10,1);
end
% 表示データの更新
set(hLine,'XData',x(1:frm),'YData',y(1:frm),'ZData',t(1:frm))
% タイトルの更新
hFrameText.String = ['Frame: ', num2str(frm)];
end
end
上記の関数を作成し、コマンドウィンドウでこんな感じで実行してみて下さい。
t = -10*pi:pi/250:10*pi;
x = (cos(2*t).^2).*sin(t);
y = (sin(2*t).^2).*cos(t);
animExample(x,y,t)
%
9 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Get Started with MATLAB についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!