[MATLAB] Legend를 사용할 때 유용한 팁 (1) 일부 legend만 표기
·
프로그래밍 Programming/매트랩 MATLAB
한 figure에 그래프를 워낙 많이 그리다보면 labeling이 중요하다. 이런 figure를 그리는 일들을 반복작업할 때 도움이 되는 팁들을 적고자 한다. 이 글은 일부 plot만 legend를 넣고 싶을 때 사용하는 방법에 대해 다룬다. Plot에 Displayname을 지정하는 방법 이 질문은 구글에 검색하면 많은 답변들이 있지만 내가 제일 편한 방식은 다음과 같다. plot을 그릴 때 'Displayname'을 지정할 수 있다. 이는 legend에 나올 이름을 지정하는 것이다. 예를 들면 x1 = 0:0.1:2*pi ; x2 = 0:0.1:2*pi ; y1 = sin(x1); y2 = cos(x2); figure; plot(x1,y1,'Displayname','sine') ; hold on; p..
[MATLAB] Function handle array 만들기
·
프로그래밍 Programming/매트랩 MATLAB
MATLAB에서 여러 개의 함수를 배열에 넣어서 쓰고 싶을 수 있다. 주로 함수 evaluation을 반복적으로 수행해야하는 경우에 굳이 개별 함수 핸들을 만든 다음에 함수 값을 받도록 하는 것은 코드의 줄 수를 늘리기 때문이다. 따라서 cell array에 함수 핸들을 넣는데 사소하게 신경써야 하는 부분이 있다. 다음과 같이 빈 cell array를 만들고 그 안에 함수를 넣을 경우에 F(1) = @(x) x^2 ; cell array의 indexing에 주의해야한다. 위와 같이 함수 핸들을 cell로 변환할 수 없다고 나온다. 따라서 아래처럼 셀 내부에 접근해서 함수를 넣는다. 인덱싱을 { }로 해주면 된다. F{1} = @(x) x^2; 아니면 함수 핸들을 cell로 만들어서 넣는다. 그리고 이렇게..
[MATLAB] 유용한 디폴트 default 속성 명령어 저장
·
프로그래밍 Programming/매트랩 MATLAB
그래프를 많이 그릴 일이 있을 때 쓰면 좋은 명령어들이다. 아래의 set( groot, ~)에서 groot 대신 0으로 지정해도 동일하다. 1. Plot의 line 두께 (오직 plot에만 적용된다. 즉, contour 같은 다른 그래프에서 적용 안됨) set( groot, 'defaultLineLineWidth', 1.5 ) ; % plot line 두께 지정 2. Grid on 을 default로 지정 set( groot, 'defaultAxesXGrid', 'on' ) ; % x축 방향으로 grid 생성 set( groot, 'defaultAxesYGrid', 'on' ) ; % y축 방향으로 grid 생성 3. 축에 있는 글씨 크기 지정 (title 포함) set( groot , 'defaultA..
[에러기록] TypeError: Input 'y' of 'Mul' Op has type float64 that does not match type float32 of argument 'x'.
·
프로그래밍 Programming/파이썬 Python
이 오류는 tensorflow에서 tensor 연산을 할 때 나올 수 있는 오류이다. tensorflow는 tensor를 정의할 때 float라고 해도 float32로 설정한다. 즉, 32비트 공간만 쓰겠다는 것이다. 그런데 numpy의 경우에는 float를 float64로 설정한다. 따라서 numpy로 만든 array를 tensor로 만든 다음에 내가 새로 정의한 tensor와 계산을 하려니 오류가 나는 것이었다. 해결방법 numpy array를 만들 때 array.astype(float32) # array는 배열 이름 이렇게 array의 타입을 바꿔주거나 tensor를 정의할 때 type을 float64로 하든, 데이터형을 맞춰주면 된다. float64가 용량을 더 많이 차지하는 것만 고려하면 될 듯..
[MATLAB] 3D plot을 그릴 때 주의할 점 : X,Y축 반전
·
프로그래밍 Programming/매트랩 MATLAB
MATLAB에서 3D plot을 그릴 때 주의할 점이 있다. MATLAB에서는 결과값이 행렬로 나올 때 plot을 하면 행(row)을 Y축으로 인식하고, 열(column)을 X축으로 인식한다. 그런데 이것은 우리의 직관과 다르다. 예를 들어 $f(x_{1},x_{2}) = (1-x_{1})^2+100(x_{2} - x_{1}^{2})^{2}$라는 함수가 있다고 하자. 내가 $(x_{1},x_{2})$ 값을 넣을 때 당연히 f라는 변수에 (1,1)항목은 $(x_{1}(1),x_{2}(1))$값을 넣는다. 여기서 $x_{1}(1)$은 $x_{1}$후보 중에 첫 번째 값을 넣는다는 뜻이다. (2,1)항목에는 $(x_{1}(2),x_{2}(1))$ 를 넣는다. 그런데 MATLAB의 변수에서 첫 번째 INDEX는..
[MATLAB] 사용자 정의 함수 (로컬 함수, 중첩 함수, 익명 함수, 프라이빗 함수)
·
프로그래밍 Programming/매트랩 MATLAB
키워드 : 로컬 함수, 중첩 함수, 익명 함수, 프라이빗 함수 MATLAB에 기본적으로 만들어져있는 내장함수도 많지만 본인이 직접 원하는 함수가 필요할 때가 있다. 예를 들어 내가 아는 $f(x)=x^{3}+x^{2}+x+3$ function이 있을 때 이를 symbolic function으로 정의해서 대입하기 보다는 사용자 정의 함수를 만들어서 그 함수에 대입을 하고 return을 받는 것이 코드 속도가 훨씬 빠르기 때문이다. 사용자 정의 함수를 만드는 방법은 크게 1. .m 코드 내에서 function을 만드는 방법 2. function을 단독으로 하는 .m 코드를 만드는 방법 으로 분류할 수 있다. 1. 실행 코드 내에서 function을 만드는 방법 1번 방법 먼저 살펴보자. 1) 익명함수 간단한..
[MATLAB] 그래프 제목에 LaTeX를 쓰고 싶을 때
·
프로그래밍 Programming/매트랩 MATLAB
MATLAB에서 그래프 제목을 명확하게 쓰는 것은 중요합니다. 나중에 그래프 저장하고 나서 제목을 제대로 안 쓰면 무슨 그래프였는지 까먹는 일이 다반사이기 때문입니다. 그런데 제목에 $\gamma$나 $\alpha$처럼 그리스 문자를 쓰고 싶거나 수식을 넣고 싶을 수 있습니다. 그럴 때는 title('$$\alpha = 0.2 $$','interpreter','latex') 이런 식으로 '$$'를 사용하면 됩니다. 또는 '$'를 사용합니다. 보통 latex에서 문장 내에서 수식삽입할 때는 '$'를 쓰고 equation을 따로 쓸 때는 '$$'를 쓰기 때문에 '$'를 쓰는 게 더 자연스러워 보이겠네요. 예제 코드 t = 1:0.01:10 ; alpha = 0.2; x = alpha * t.^2 ; figu..
[Matplotlib] 내가 쓰는 배경이 어두운 색일 때 matplotlib 설정
·
프로그래밍 Programming/파이썬 Python
나는 Jupyter notebook을 쓸 때 눈의 피로도를 낮추기 위해서 테마를 어두운 색으로 적용했다. jupyter notebook theme를 적용하는 라이브러리를 사용해서 이렇게 했는데 문제는 plot을 그릴 때 matplotlib은 기본적으로 tick과 글씨들이 모두 검은색으로 적용이 되면서 plot이 잘 안 보이는 문제가 발생했다. 위의 그림처럼 된다. 그래서 두 가지 방법이 있는데, 1. matplotlib에서 쓰는 style 자체를 바꾸는 것 2. figure의 face color를 white로 바꾸는 것 1번 방법 그래프를 그리기 전에 다음과 같은 코드를 사용한다. plt.style.use('seaborn') use() 괄호 안에는 여러가지가 들어갈 수 있는데 'seaborn'은 그래프를..
[MATLAB] Symbolic 식에서 복잡한 숫자로 된 분수를 소수로 바꾸기
·
프로그래밍 Programming/매트랩 MATLAB
sym을 이용해서 symbolic 식을 쓰면 편리하게 기호가 들어간 식 계산을 수행할 수 있다. 그런데 그렇게 계산하던 중에 분수가 들어가는 경우 다음과 같이 분수가 제대로 계산되지 않고 길게 늘어진 것을 확인했다. 굳이 식을 확인하지 않으려면 무시하고 써도 상관은 없지만 보기 편하게 하기 위해서 다음과 같은 코드를 사용했다. pos라는 식이 저장된 변수를 각 소수에 대해 다섯자리만 나오게 하려면 vpa(pos,5) 다음과 같이 입력하면 된다. pos 대신 자신이 만든 식을 넣으면 된다. 그렇게 하면 분수가 계산되어서 위처럼 간단하게 식을 볼 수 있다.
[MATLAB] Figure 그릴 때 유용한 명령어 및 기능 모음
·
프로그래밍 Programming/매트랩 MATLAB
MATLAB에서 결과를 plot하고 싶을 때 유용한 기능들을 모아놓고 쓰려고 기록하는 글. 1. Plot할 때 디폴트 속성 지정하기 plot을 많이 쓰면 일일이 plot의 디테일을 지정해주는 게 번거롭고 귀찮다. 그럴 때는 아예 figure 디폴트 속성을 지정해놓으면 된다. 내가 자주 쓰는 명령은 다음과 같다. set( groot, 'defaultLineLineWidth', 1.5 ) ; % plot line 두께 지정 set( groot, 'defaultAxesXGrid', 'on' ) ; % x축 방향으로 grid 생성 set( groot, 'defaultAxesYGrid', 'on' ) ; % y축 방향으로 grid 생성 set( groot , 'defaultAxesFontSize', 12 ); %..