예전에 한번 올린 글입니다만, 이번에는 애니메이션을 매트랩으로 만들어보았습니다. 아래는 매트랩 코드이며, 깃헙에도 올려두었습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 1..
깃헙 페이지 매트랩에서 기본으로 제공하는 방법은 symbolic을 활용하는 것이다. >> A = sym('A', [2, 4]) A = [A1_1, A1_2, A1_3, A1_4] [A2_1, A2_2, A2_3, A2_4] 숫자로 구성된 행렬을 만들고 싶다면, 함수를 만들어서 써야 한다. 아래는 함수 코드와 실행 결과이다. cell unpacking이 활용되었다. function arr = idx_mat(varargin) arr_cell = cell(nargin, 1); idx = cell(nargin, 1); for i=1:nargin idx{i} = 1:varargin{i}; end [arr_cell{:}] = ndgrid(idx{:}); arr = zeros(varargin{:}); for i=1:..
이 글은 깃헙에서도 보실 수 있습니다. 클래스 만들기 아래는 간단한 직사각형 클래스 예제이다. classdef rect properties width height end methods function obj = rect(width,height) obj.width = width; obj.height = height; end end end 클래스와 이름이 같은 메서드는 생성자(Constructor)로, 인스턴스를 만들 때 호출된다. 생성자가 필수는 아니다. 하지만 생성자를 두는 것이 일반적이므로, 생성자가 없는 경우는 다루지 않겠다. >> a = rect(3,4) a = rect with properties: width: 3 height: 4 Property의 기본값 설정 인스턴스 생성 시 property의..
%% generate table % % 테이블을 만드는 방법은 여러 가지가 있지만 % 엑셀을 만들고 불러오는게 제일 편하다. itzy = readtable('itzy.xlsx'); disp(itzy) %% name indexing % % names, lastname 등은 variable이라고 부른다. % 변수를 가리키는 variable과 이름이 같으니 헷갈리지 말자. % table.varname의 형태로 각 variable에 접근할 수 있다. % table.varname은 array를 반환한다. disp('itzy.names') disp(itzy.names) disp('itzy.height') disp(itzy.height) %% numeric indexing % % 하지만 여전히 numeric inde..
매트랩 그래픽 객체의 ButtonDownFcn과 Figure 객체의 SelectionType을 이용하면 재밌는 걸 할 수 있습니다. 본 글의 목표는 아래의 코드를 구현하는 것입니다. - Line 또는 FunctionLine을 클릭하여 linestyle을 바꿈 - 좌클릭은 dashed (--) - 우클릭은 dotted (:) - 중클릭은 dash-dotted(-.) - 더블클릭은 solid line(-) - Figure에 만들어지는 모든 Line과 FunctionLine에 적용 (새로 추가되는 객체에도 적용) 1. ButtonDownFcn 우선 클릭했을 때 어떤 동작이 일어나도록 만들어야 합니다. 이와 같이 어떤 이벤트에 의해서 실행되는 함수를 일반적으로 '콜백(callback) 함수'라고 부릅니다. 매트..
티스토리에 매트랩 코드를 올리는 방법을 조사해봤습니다. 결론부터 얘기하자면, gist와 colorscripter가 제일 깔끔하다고 생각됩니다. 좀 안 이뻐도 간단하게 올리려면 티스토리 자체 코드블럭 기능을 쓰면됩니다. html나 css를 알아야 쓸 수 있는 방법들은 배제했습니다. 왜냐면 제가 할 줄 모르거든요(...). 1. 캡쳐 or 파일 올리기 방법: 그냥 캡쳐해서 붙여넣는다. 또는 파일 첨부한다. 장점: 제일 쉽다. 파일로 받을 수도 있다. 단점: 이럴거면 이 글을 쓸 이유가 없다(...). 2. 티스토리 자체 코드블럭 기능 % 10줄짜리 코드에 최대한 다양한 키워드를 담으려고 고민한 코드 while true name = input('Type your nickname: ', 's'); if ~ise..
$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..
확인해보기로 했다. 왜냐하면 그냥 균일한 보라색으로 보였거든. clear close all clc img = imread('수분부족.jpg'); figure, imshow(img) img_single = rgb2gray(imcrop); figure, subplot(1,2,1), imshow(img_single, []) subplot(1,2,2), histogram(img_single(:)) 감기에 해당되는 원 내부를 선택하면 아래와 같은 결과를 얻을 수 있다. 숫자가 명확히 보이고, 히스토그램에도 전경과 배경에 해당되는 두 peak이 보인다. 나머지도 해봤다.
매트랩의 레이아웃을 command를 이용하여 저장/설정할 수 있습니다. 이곳을 참고했습니다. 레이아웃 저장하기 우선 레이아웃을 원하는 모양으로 만듭니다. 그리고 아래 코드를 이용하여 MLDesktop 핸들을 가져옵니다. desktop = com.mathworks.mde.desk.MLDesktop.getInstance; MLDesktop의 saveLayout 메서드를 이용하면 레이아웃이 저장됩니다. 메서드의 입력으로 레이아웃 이름을 적습니다. desktop.saveLayout('mylayout') 레이아웃이 만들어졌는지 확인할 수 있습니다. 메뉴의 홈 탭의 레이아웃에 mylayout이 생겼습니다. 참고로 레이아웃은 C:\Users\\AppData\Roaming\MathWorks\MATLAB\에 xml 파일..