Identify Yourself!
개요
표제의 문언을 최근에 알았습니다. 그래서 You를 Identify하는 게임(?)을 MATLAB에서 만들었습니다.
MATLAB의 플롯 윈도우에서 동정 여기 신호를 마우스 등으로 트랙하면 동적 특성이 계산됩니다.
다운로드 대상
아래 파일을 다운로드하고 "ident_you"를 실행하십시오.
다운로드 링크
또한 다음 환경을 전제로 합니다.
* 가정의 MATLAB
* PC
* 포인팅 장치
* System Identification Toolbox(있는 경우)
코드 해설
여기서 취해 붙인 것 같은 해설을 써 둡니다(Qiita이므로). 이번에 사용한 버튼이나 마우스 위치 취득은 모두 MATLAB 그래픽스 객체의 콜백 기능을 사용해 구현되고 있습니다( 참고 by @macht 씨, MathWorks 공식 문서 ).
GUI 버튼
타이틀 화면에서 여기 신호를 M 계열/랜덤 스텝으로 전환하는 버튼은 rectangle 객체로 구현하고 있습니다. 아래 예제 코드와 같이 rectangle 객체는 클릭 시 ButtonDownFcn에 지정된 콜백 함수를 호출하므로 여기에 버튼 동작을 지정합니다. 또한 기본적으로 PickableParts 속성이 'visible'로 설정되어 있기 때문에 FaceColor 속성을 지정하여 색상을 지정하거나 PickableParts 속성을 'all'로 지정하지 않으면 가장자리 부분에만 "당 판정"이 발생합니다. 합니다.
% ボタンの外見指定
pos_x = 0;
pos_y = 0;
width = 5;
height = 2;
color = [0.9, 0.1 0.1];
% クリック時のコールバック関数
OnBtnClicked = @(~,~) disp('Clicked!');
% rectangleを作成
rectangle('Position', [pos_x-width/2, pos_y-height/2, width, height], 'FaceColor', color, 'ButtonDownFcn', OnBtnClicked);
% 表示調整
xlim([-10, 10]);
ylim([-10, 10]);
축에서 마우스 포인터 위치 얻기
확인 실험 중에 사용자의 마우스 조작을 캡처하기 위해도 figure 객체의 WindowButtonMotionFcn 콜백을 사용합니다. 아래 예제에서는 콜백 중에 axes 객체의 CurrentPoint 속성을 참조하여 제목에 포인터 위치를 표시합니다.
% マウス移動時のコールバック
% 第1引数oは呼び出し元のオブジェクト(hf)
% Childrenで子オブジェクトのhaを参照
OnMouseMove = @(o,~) title(o.Children, string(o.Children.CurrentPoint(1,1:2)));
% figureオブジェクト
hf = figure('WindowButtonMotionFcn', OnMouseMove);
% axesオブジェクト
ha = axes(hf);
% 飾り
scatter(ha, rand(10, 1), rand(10, 1));
부록
아래 파일을 다운로드하고 "ident_you"를 실행하십시오.
다운로드 링크
또한 다음 환경을 전제로 합니다.
* 가정의 MATLAB
* PC
* 포인팅 장치
* System Identification Toolbox(있는 경우)
코드 해설
여기서 취해 붙인 것 같은 해설을 써 둡니다(Qiita이므로). 이번에 사용한 버튼이나 마우스 위치 취득은 모두 MATLAB 그래픽스 객체의 콜백 기능을 사용해 구현되고 있습니다( 참고 by @macht 씨, MathWorks 공식 문서 ).
GUI 버튼
타이틀 화면에서 여기 신호를 M 계열/랜덤 스텝으로 전환하는 버튼은 rectangle 객체로 구현하고 있습니다. 아래 예제 코드와 같이 rectangle 객체는 클릭 시 ButtonDownFcn에 지정된 콜백 함수를 호출하므로 여기에 버튼 동작을 지정합니다. 또한 기본적으로 PickableParts 속성이 'visible'로 설정되어 있기 때문에 FaceColor 속성을 지정하여 색상을 지정하거나 PickableParts 속성을 'all'로 지정하지 않으면 가장자리 부분에만 "당 판정"이 발생합니다. 합니다.
% ボタンの外見指定
pos_x = 0;
pos_y = 0;
width = 5;
height = 2;
color = [0.9, 0.1 0.1];
% クリック時のコールバック関数
OnBtnClicked = @(~,~) disp('Clicked!');
% rectangleを作成
rectangle('Position', [pos_x-width/2, pos_y-height/2, width, height], 'FaceColor', color, 'ButtonDownFcn', OnBtnClicked);
% 表示調整
xlim([-10, 10]);
ylim([-10, 10]);
축에서 마우스 포인터 위치 얻기
확인 실험 중에 사용자의 마우스 조작을 캡처하기 위해도 figure 객체의 WindowButtonMotionFcn 콜백을 사용합니다. 아래 예제에서는 콜백 중에 axes 객체의 CurrentPoint 속성을 참조하여 제목에 포인터 위치를 표시합니다.
% マウス移動時のコールバック
% 第1引数oは呼び出し元のオブジェクト(hf)
% Childrenで子オブジェクトのhaを参照
OnMouseMove = @(o,~) title(o.Children, string(o.Children.CurrentPoint(1,1:2)));
% figureオブジェクト
hf = figure('WindowButtonMotionFcn', OnMouseMove);
% axesオブジェクト
ha = axes(hf);
% 飾り
scatter(ha, rand(10, 1), rand(10, 1));
부록
% ボタンの外見指定
pos_x = 0;
pos_y = 0;
width = 5;
height = 2;
color = [0.9, 0.1 0.1];
% クリック時のコールバック関数
OnBtnClicked = @(~,~) disp('Clicked!');
% rectangleを作成
rectangle('Position', [pos_x-width/2, pos_y-height/2, width, height], 'FaceColor', color, 'ButtonDownFcn', OnBtnClicked);
% 表示調整
xlim([-10, 10]);
ylim([-10, 10]);
% マウス移動時のコールバック
% 第1引数oは呼び出し元のオブジェクト(hf)
% Childrenで子オブジェクトのhaを参照
OnMouseMove = @(o,~) title(o.Children, string(o.Children.CurrentPoint(1,1:2)));
% figureオブジェクト
hf = figure('WindowButtonMotionFcn', OnMouseMove);
% axesオブジェクト
ha = axes(hf);
% 飾り
scatter(ha, rand(10, 1), rand(10, 1));
Reference
이 문제에 관하여(Identify Yourself!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/HppyCtrlEngnrng/items/a78e108829593ccf1fcb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)