Software 15

[Visual Studio] unresolved external symbol __imp_timeGetDevCaps, __imp_timeBeginPeriod 해결방법 (LNK2019 error)

Visual Studio에서 threading을 위한 환경을 구축하던 중 다음과 같은 에러가 발생했다. Timeapi.h의 timeGetDevCaps, timeBeginPeriod 함수를 쓰기 위해서는 추가적으로 winmm.lib를 링크해야하는 것이다.https://learn.microsoft.com/ko-kr/windows/win32/api/timeapi/nf-timeapi-timegetdevcaps timeGetDevCaps 함수(timeapi.h) - Win32 appstimeGetDevCaps 함수는 타이머 디바이스를 쿼리하여 해상도를 확인합니다.learn.microsoft.com 코드에 다음과 같이 명시적으로 링크해주거나#pragma comment(lib, "winmm.lib") /* Solve..

[MATLAB] Figure에서 legend 순서 변경하기

처음 plot을 그릴 때, plot() 합수의 return object를 받아오면 legend 순서를 변경하기 쉽지만, 이미 그려진 plot의 figure 창에서 plot object도 없을 때 변경하는 법을 기록해두려고 한다. x = 1:10;y1 = x;y2 = 2*x;y3 = 3*x;p1 = plot(x, y1); hold on; % Plot object 저장p2 = plot(x, y2); hold on;p3 = plot(x, y3); hold on;legend([p3,p2,p1], ["3x", "2x", "1x"]); figure로부터 plot 한 children 정보를 받아오고 Legend를 다시 표시하는 방식이다. load('filename.fig');labels = get(legend(),..

Software/MATLAB 2025.11.04

[MATLAB] Legend 마커 크기 조정

Plot의 마커 크기와 Legend 속 마커 크기가 같지 않아 잘 보이지 않는 경우가 있다 (크기가 왜 다른 건지는 의문 .. ) Plot 마커 크기를 키워 Legend 도 같이 키워지게 할 수는 있어도, Legend 속 마커 크기만 바꿀 수 있는 설정은 아직까지 없는 것 같다 .. 하지만 우회할 수 있는 방법은 찾았다! Null plot을 하여 그래프에는 보이지 않게 하지만, Legend에는 표시되게 하는 방식이다 Plot 세부 파라미터는 오리지널 데이터와 같게 한다. 이때 MarkerSize 부분만 숫자 변경해가며 원하는 크기로 설정하면 된다. p = plot(nan, nan, 'pentagram', 'MarkerSize', 10, 'DisplayName', 'data 1','Color','r..

Software/MATLAB 2025.10.01

[MATLAB] 직전 plot 지우기, 이전으로 되돌리기

데이터를 plot 하다가 직전에 plot한 데이터를 지우고 싶을 때가 있다. 예를 들어 아래와 같은 quiver plot 중심에 별 모양으로 scatter plot을 하나 더했다고 하자. 가장 최근에 더한 scatter를 지우고 싶다면 아래 코드를 시행하면 된다.items = get(gca, 'Children');delete(items(1)); 이때 items가 무엇인지 확인해보면 아래와 같은 array로 나온다. delete(items(1)) 를 해줌으로써 가장 최근에 더한 scatter plot을 지울 수 있는 것이다.items = 2×1 graphics array: Scatter Quiver 별이 사라진 원래 모습의 plot으로 되돌아왔다.

Software/MATLAB 2025.10.01

[MATLAB] 함수 파라미터 default 값 설정 (arguments)

Python의 경우 함수를 선언할 때 파라미터의 default 값을 설정할 수 있다.def myFunc(a=1, b=2) 이렇게 말이다. MATLAB에서는 python과 같은 syntax를 지원하지 않지만 비슷한 기능이 있다. arguments 키워드위 그림은 Mathworks 에서 설명하는 arguments 키워드의 구조이다. 함수를 선언하고, 첫 부분에 arguments~end block을 만들어준다.Size, class. functions 등 복잡해보이는데 관심 있는 default 값 설정 방법부터 보겠다. Parameter default 값 설정defaultValue 설정 방법이다.function [sum] = myFunc(a,b) arguments a = 1; b = ..

Software/MATLAB 2025.06.25

[Visual Studio] 내가 자주 쓰는 단축키 + 단축키 커스텀

코드 작성 - default기능단축키비고현재 줄 복사Ctrl + c 현재 줄 다음 줄에 복제Ctrl + d 블록 단위로 커서 이동Ctrl + 방향키        코드 작성 - custom기능단축키비고줄 앞, 뒤로 이동Alt + 방향키              코드 실행기능단축키비고코드 실행F5 프로그램 실행 멈춤Shift + F5 현재 줄에 breakpoint 추가F9      단축키 설정하는 법Tools > Options 창 열어주기 1. 검색창에 keyboard 검색하여 설정 메뉴 들어가기2. 관심 command 검색   3. Global 설정을 Text Editor로 바꿔주기-> global로 하면 안되는 경우 있음 .. 이유는 아직 모르겠다 다른 단축키랑 충돌나서 그런 건지 3. 단축키 입력 4. ..

[MATLAB] .txt 파일 행렬로 읽어오기 (fopen, fscanf)

실험 결과 logging 후 MATLAB으로 가져와 해석할 때 자주 쓰이는 방법이라 기록해두려 한다. 매 loop 마자 특정 데이터를 저장하고, 그것을 .txt 확장자로 저장했다고 하자. "test.txt"1 2 3 4 5 62 4 6 8 10 12 3 6 9 12 15 18 ... 6개의 원소를 매 loop마다 저장해 (한 행) 총 n개의 열을 저장해다. 이제 생성된 txt 파일을 script와 같은 경로에 두고 (같은 경로가 아니라면 fopen 함수의 경로 파라미터에 따로 지정), 아래 코드를 작성한다.file1 = fopen('test.txt','r');test_arr= fscanf(file1, '%f');test_mat= reshape( test_arr , 6, [])' ; % [n x 6] 행..

Software/MATLAB 2025.01.20

[MATLAB] Figure 창 모니터 특정 위치에 고정하기

MATLAB에서 figure창을 띄우면 디폴트로 주 모니터의 정중앙에 띄워진다.  나같은 경우엔 주로 보조모니터의 상단부에 figure를 고정시켜놓고 코딩을 하거나 데이터를 분석하는데,  Figure창을 새로 띄울 때마다 움직여주는 게 상당히 귀찮았다 ... 찾아보니 command로도 figure 위치를 움직일 수 있었는데, 이 command를 "startup.m"에 추가해두면 매번 위치를 옮길 필요가 없는 것이다!먼저 우리가 원하는 창의 위치와 크기를 찾아보자.fig = figure() figure 창을 하나 띄우고 원하는 위치와 크기로 창을 설정한다.  그리고 fig 변수를 열어보면 Position이라는 property 를 확인할 수 있다. Position은 4x1 벡터로 figure 창의 위치 및 ..

Software/MATLAB 2025.01.14

[MATLAB] 내가 자주 쓰는 단축키

계속 추가할 예정 코드 작성기능단축키비고자동 정렬Ctrl + I 전체를 포맷하고 싶으면 Ctrl + A로 코드 전체 선택 후 Ctrl + I주석 처리Ctrl + R여러 줄 선택 후 눌러도 한꺼번에 주석처리 가능긴 코드 다음 줄에 이어쓰기Shift + Enter끝에 '...' 이 추가되며 다음 줄에 코드를 이어 작성할 수 있음현재 줄 복제Ctrl + Shift + C 단어 단위로 커서 이동Ctrl + 방향키  파일 관리기능단축키비고함수 .m 파일 열기Ctrl + D           코드 실행기능단축키비고코드 실행F5Pause 시키고 다시 resume시킬 때도 해당

Software/MATLAB 2025.01.14

[ROS2] Publish + Subscribe 기초 예제 (C++)

안녕하세요.ROS2 에서 Publish, Subscribe 노드를 생성하고 통신을 테스트해보는 기초 예제입니다. 1. ROS2 패키지 생성ros2 pkg create --build-type ament_cmake cpp_pub_sub 1) rclcppROS2 의 C++ client 라이브러리 2) std_msgsROS의 메세지 타입을 표준화하여 정의ex) int32, float32 등  2. Publisher 코드 작성"cpp_pub.h"#include #include #include #include #include "rclcpp/rclcpp.hpp" #include "std_msgs/msg/int32.hpp"using namespace std::chrono_literals; class CppPub..

Software/Linux 2025.01.07