Software/MATLAB 10

[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

[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

[MATLAB] repmat: 벡터를 반복하여 행렬 생성

매트랩에서 행렬 계산을 할 때 두 행렬 간 차원이 맞지 않아 계산이 안되는 경우가 있다. 행렬의 모든 열에  같은 벡터를 외적하고 싶다해보자.외적 함수인 cross는 두 파라미터의 차원이 같아야하기 때문에, 행 크기가 같은 벡터와 행렬을 넣어줘도 에러가 뜬다. x = [1,2,3]'; % 3x1A = rand(3,3); % 3x3cross(x,A); % error : x and A must be the same size 이때, repmat 함수를 이용하여 벡터를  A의 열 수만큼 반복해 만들어주면 cross를 실행할 수 있다.x_mat = repmat(x,1,3); % x를 반복하여 A와 같은 size로 만들어준다.cross(x_mat,A) % Works! Referencehttps://www.mathw..

Software/MATLAB 2025.01.03

[MATLAB] yyaxis : Plot y축 좌우 2개 설정

시간 같은 동일한 x축을 공유하는 두 데이터의 y scale 차이가 클 때, 단순히 두 데이터를 하나의 figure에 plot하면 비교가 어려운 경우가 있다. 그럴 때 오른쪽에 y축을 하나 더 생성할 수 있다.  한 축에 두 데이터 담을 때 figure()x = linspace(0,25);y1 = sin(x/2);y2 = 300 + cos(x/4);plot(x,y1)hold onplot(x,y2)legend('y1','y2')   Scale의 차이로 인해 두 데이터의 파형이 잘 보이지 않는다.  y축을 따로 생성했을 때yyaxis 명령으로 그리고 싶은 좌우 축을 선택한다. figure()x = linspace(0,25);y1 = sin(x/2);y2 = 300 + cos(x/4);yyaxis left %..

Software/MATLAB 2025.01.02

[MATLAB] linkaxes: Subplot 축 확대 동기화

서로 같은 축을 공유하는 Subplot끼리 (ex. 시계열 데이터) 데이터를 비교해야할 때한 subplot 안에서 확대/축소가 다른 subplot에도 같이 적용되게 하는 방법이다. ax1 = subplot(2,1,1);% Plot 1st graph hereax2 = subplot(2,1,2);% Plot 2nd graph herelinkaxes([ax1 ax2],'x'); % 동기화 원하는 축 선택: 2D의 경우 'x' 또는 'xy' Referencehttps://kr.mathworks.com/help/matlab/ref/linkaxes.html

Software/MATLAB 2024.12.31