$e^x$는 특별한 성질이 있습니다. 미분을 해도 자기 자신이 그대로 나옵니다. 일반적으로 지수함수의 미분은 아래와 같습니다. $$\frac{d}{dx} a^x = a^x \ln{a}$$ 그렇다면 미분해서 원래의 함수와 똑같이 나오는 base를 찾으면 $e$라고 볼 수 있겠군요. 아래는 해당 과정을 구현한 코드입니다. clear close all clc syms x xmin = -2; xmax = 2; xx = linspace(xmin, xmax); % factory: returns symbolic function a^x % fdiff: returns difference (f-dfdx) for a given range of x factory = @(base) base^x; fdiff = @(f) doub..
세줄요약 증상: matplotlib.pyplot.bar()로 막대 그래프를 그릴 때 막대가 사라지거나 막대 사이의 틈이 없어지는 현상이 있음 원인: bar()는 막대의 위치를 1픽셀 단위로만 계산하는데, 막대 또는 틈이 너무 얇으면 무시하고 그리지 않음 해결책: bar()의 파라미터 중 width를 조절하고, 필요에 따라 figsize를 바꾸거나 edgecolor를 설정하거나 Figure 창의 크기를 조절 일러두기 본 글의 코드 중 캡쳐한 것은 코랩, 코드 블록은 vscode 또는 매트랩에서 실행한 코드입니다. 코드는 모두 여기에서 보실 수 있습니다. 감사의 글 본 글의 아이디어를 주신 페가님께 감사 말씀 드립니다. 이상한 막대 그래프 matplotlib의 bar()를 이용하여 간단히 막대 그래프를 그려..
매트랩의 레이아웃을 command를 이용하여 저장/설정할 수 있습니다. 이곳을 참고했습니다. 레이아웃 저장하기 우선 레이아웃을 원하는 모양으로 만듭니다. 그리고 아래 코드를 이용하여 MLDesktop 핸들을 가져옵니다. desktop = com.mathworks.mde.desk.MLDesktop.getInstance; MLDesktop의 saveLayout 메서드를 이용하면 레이아웃이 저장됩니다. 메서드의 입력으로 레이아웃 이름을 적습니다. desktop.saveLayout('mylayout') 레이아웃이 만들어졌는지 확인할 수 있습니다. 메뉴의 홈 탭의 레이아웃에 mylayout이 생겼습니다. 참고로 레이아웃은 C:\Users\\AppData\Roaming\MathWorks\MATLAB\에 xml 파일..
매트랩의 불편한 점이 하나 있습니다. 폰트를 한번에 한 종류밖에 쓰지 못합니다. 그래서 한글이 포함되지 않은 폰트를 쓰면 한글이 제대로 표시되지 않습니다. 매트랩 설치 후 기본 폰트는 monospaced입니다. monospaced에는 한글이 포함되어 있습니다. 음. 못생겼습니다. 이걸 제가 사랑하는 Consolas[1]로 바꾸면 아래처럼 돼버립니다. 제대로 된 글자는 다 깨지면서 원래는 없는 글자인 “맽”은 제대로 표시되는게 아이러니하군요. 이 문제는 매트랩의 데스크탑 언어를 한글로 해도 똑같이 발생합니다. 원래는 아래처럼 나와야 할 것이 폰트를 Consolas로 바꾸면 아래처럼 한글이 깨져버리는 어이없는 현상이 발생합니다. 표시 언어와 환경 언어의 불일치라니… 꽤 오래된[2] 문제인[3] 것으로 알고 ..
세줄요약- 매트랩 설치 파일은 https://matlab.mathworks.com/에서- 툴박스 설치 방법1: 툴박스에 포함된 함수 아무거나 실행 후 툴박스 링크 클릭하여 Add-On Explorer에서 설치- 툴박스 설치 방법2: APPS 탭에서 Get More Apps 눌러서 툴박스 검색 후 설치 데스크탑을 새로 샀습니다. 3년 반 동안 열심히 굴러준 노트북이 한 달에 한 번 꼴로 블루스크린을 띄우더군요. 불안한 마음에 모처럼 아낌없이 질러주었습니다. 오랜만에 매트랩을 새로 설치하려니 두근두근…하기는커녕 설치파일부터 어디서 다운받아야 할지 헷갈리더군요. 부끄… 간만에 매트랩 설치한 기록을 적어봅니다. 이왕 새로 설치하는 김에 툴박스 설치도 따로 해봤습니다. 제어 이론 수업 들으면서 매트랩 처음 사..
나름 유명한 유머입니다. 이 유머의 포인트는 느낌표를 강조로 보느냐 factorial로 보느냐에 있습니다. 이과의 관점에서는 이라서 옳은 답이고, 문과의 관점에서는 이라야 옳은 답이 됩니다. 이런 유머가 가능한 숫자는 40, 32, 4 외에도 더 있습니다. 예를 들어 아래와 같은 조합도 가능합니다. [문제1] A - B÷2 = C!의 형태로 동일한 유머가 가능한 10000 이하의 자연수 A, B, C는 총 몇 쌍이 있을까요? 답은 총 3쌍입니다. 여러분도 한번 찾아보세요! [문제2] A - B÷D = C!의 형태로 동일한 유머가 가능한 2 이상 100 이하의 자연수 A, B, C, D는 총 몇 쌍이 있을까요? 역시 답은 총 3쌍입니다. 여러분도 한번 찾아보세요! - 게으른
한줄요약: 함수명 뒤에 괄호를 쓰고 1초만 기다려보자. 자주 쓰는 함수가 아니면 사용법이 생각나지 않을 때가 있습니다. 사실 자주 쓰는 함수도 종종 헷갈립니다. 예를 들어... - interp1의 인자를 어떤 순서로 쓰더라? method가 먼저던가, extrapolation이 먼저던가? - polyfit에 인자가 몇 개 들어가지? - randi에 max 값이 먼저였나? 아니면 행렬 크기가 먼저였나? 이럴 때 쓰는 방법이 몇 가지 있습니다. 가장 확실한 방법은 명령 창에 아래처럼 쓰는 것입니다. >> doc randi 도움말 창이 뜨면서 randi 사용법 문서를 볼 수 있습니다. 이 정도까지는 필요없고 간단히 사용법만 보고 싶다면 명령 창에 아래처럼 쓰면 됩니다. >> help randi 이보다 더 빠른 ..
단축키는 중요할 수도 있고 아닐 수도 있습니다. 하지만 자주 쓰는 기능의 단축키를 알아두면 분명 도움이 될 겁니다. 제가 자주 쓰는 단축키를 모아봤습니다. (주의: 본 글은 gif가 많습니다.) 0. 한장요약 1. 코드 전체 실행: F5 2. 코드 실행 중 디버그 모드 진입: CTRL + F5 - Breakpoint(중단점)과 기능적으로 동일합니다. - 프롬프트의 K>>는 키보드 입력이 가능함을 의미합니다. 3. 디버그 끝, 코드 실행 계속: F5 - 멈췄던 부분에서 이어서 실행을 계속합니다. 4. 디버그 중 코드 실행 종료: SHIFT + F5 - 코드 실행을 완전히 중지합니다. 5. 코드 실행 강제종료: CTRL + C - 명령 창에서 CTRL + C를 누르면 됩니다. 6. 변수명 일괄 변경: SHI..
eval은 마법의 명령어입니다. 아무리 복잡한 코드도 eval로 모두 생성할 수 있습니다. 그래서인지 많은 분들이 아직도 eval을 사용합니다. 특히 변수명을 A1, A2, A3, …처럼 생성하기 위해 eval을 자주 사용합니다. 이러한 연속된 이름의 변수 생성은 eval 없이 할 수 없기 때문이죠. 게다가 크기가 일정하지 않은 변수들은 하나의 numeric array에 담을 수 없으므로 eval을 이용하는 경우가 많습니다. 하지만 eval은 양날의 검입니다. global과 함께 대표적으로 지양해야 할 것 top2입니다. 괜히 eval을 evil이라고 하는게 아닙니다. 왜 eval을 쓰지 말아야 하는지, 어떤 대안이 있는지 살펴보겠습니다. eval의 문제점 1. 실행속도가 느려질 수 있습니다. 매트랩은 ..