목록Matlab (17)
자료 매번 검색하기 귀찮아서 만든 블로그

참고 자료 : https://kr.mathworks.com/help/matlab/creating_plots/graph-with-multiple-x-axes-and-y-axes.html 여러 개의 스케일과 좌표축 제한을 사용하여 데이터 표시하기 - MATLAB & Simulink - MathWorks 한국 이 예제의 수정된 버전이 있습니다. 사용자가 편집한 내용을 반영하여 이 예제를 여시겠습니까? kr.mathworks.com 스케일이 다른 두개의 데이터를 동시에 그리고싶을 때 사용한다 예제 코드 x1 = 1:10; y1 = rand(length(x1), 1); x2 = 100:150; y2 = rand(length(x2), 1); x축의 스케일이 다른 두 그림을 한 figure에 담고싶을 때, figur..
>> a = [1, 2, 100, 500, 3] a = 1 2 100 500 3 >> b = [3, 1, 10, 9] b = 3 1 10 9 a와 b라는 배열이 있다고 할 때, a 배열의 원소들 중 어떤 값들이 b에도 들어가있는 원소인지 (혹은 반대로) 확인하고싶다. 이 경우, ismember 함수를 사용한다. >> ismember(a, b) ans = 1×5 logical 배열 1 0 0 0 1 >> a(ismember(a,b)) ans = 1 3 짠 반대의 경우도 가능하다. >> ismember(b, a) ans = 1×4 logical 배열 1 1 0 0 >> b(ismember(b, a)) ans = 3 1 1차원 배열 뿐만 아니라, 다차원 행렬에 대해서도 ismember 를 적용할 수 있다. >..
mat = 5×1 cell 배열 {'Android'} {'Android'} {'Android'} {'iOS' } {'iOS' } >> mat(1) ans = 1×1 cell 배열 {'Android'} 가끔 문자가 포함된 데이터를 MATLAB에서 로드하면, 위와 같이 cell 배열로 불러와지는 경우가 있다. 전처리를 할 때 cell 배열은 다루기가 귀찮으므로, cell 배열을 string의 배열로 변환하고싶다. 이를 위해서는 간단히 string 함수를 사용하면 된다. >> mat2 = string(mat) mat2 = 5×1 string 배열 "Android" "Android" "Android" "iOS" "iOS" >> mat2(1) ans = "Android"
>> category = ['x'; 'y'; 'x'; 'z'; 'y'] category = 5×1 char 배열 'x' 'y' 'x' 'z' 'y' >> values = [5; 11; 1; 3; 2] values = 5 11 1 3 2 >> Table = table(category, values) Table = 5×2 table category values ________ ______ x 5 y 11 x 1 z 3 y 2 다음과 같이 테이블이 주어졌다고 할 때, 카테고리별로 합, 평균 등을 계산하기 위해서는 groupsummary 함수를 사용한다 대표적으로 합, 평균, 표준편차를 계산해보자 합 >> groupsummary(Table, 'category', 'sum') ans = 3×3 table cate..
python에서 데이터프레임을 다룰 때, value_counts() 를 사용하면 범주형인 열의 범주별 빈도수를 계산할 수 있다. 비슷하게 Matlab에서는 groupcounts 라는 함수를 사용하면 각 범주가 등장하는 빈도수를 계산할 수 있다. >> str = ['a'; 'b'; 'a'; 'c'; 'a'; 'b'] str = 6×1 char 배열 'a' 'b' 'a' 'c' 'a' 'b' a가 3개, b가 2개, c가 1개인 이 리스트에 대해, groupcounts 함수를 적용해보자 >> [Counts, Category] = groupcounts(str) Counts = 3 2 1 Category = 3×1 char 배열 'a' 'b' 'c' 첫번째 결과값인 Counts는 빈도수, 두번째 결과값인 Cat..
>> a = [1,2,5,10,6,1,10] a = 1 2 5 10 6 1 10 1차원 행렬이 다음과 같이 있다고 할 때, 중복된 원소를 제거한 배열을 결과값으로 얻고 싶을 경우 unique 함수를 사용한다 >> unique(a) ans = 1 2 5 6 10 중복된 값인 1과 10 (6, 7번째 원소)이 사라진 것을 확인할 수 있다. 단, unique 함수를 사용하면 기본적으로 결과 배열의 크기가 정렬된 형태로 생성된다. 정렬을 원하지 않는 경우, 'stable' 을 추가 인수로 입력해주면 기존의 순서는 변하지 않게 출력된다. >> unique(a, 'stable') ans = 1 2 5 10 6 다차원 행렬에 대해서도 적용이 가능하다. >> a = [1, 2 ; 2, 4 ; 1, 5 ; 2, 4 ; ..

mkdir('만들고자 하는 폴더의 이름') 기본적으로 MATLAB에서는 mkdir (make directory)를 사용하면 원하는 경로에 폴더를 생성할 수 있다. 나의 경우 for문을 순회하며 폴더 내에 파일을 저장하는 방식의 코드를 작성해야 했는데, 해당 경로에 같은 이름의 폴더가 존재하는데 mkdir를 사용할 경우 경고 메시지를 뱉어난다 은근히 거슬려서 찾아보니, exist 라는 함수를 사용하면 이를 해결할 수 있다고 한다 방법은 간단하다. if ~exist('만들고자 하는 폴더 명', 'dir') mkdir('만들고자 하는 폴더 명') end 간단한 예시를 통해 구현해보자. 아래 사진이 현재의 내 폴더의 상태이다. 여기서 위의 코드를 처음 실행하면 My_Folder가 생성된 것을 확인할 수 있다. ..

subplot으로 그려진 그림에 대해, 공통 레이블을 붙여보자. f = figure; subplot(3,1,1) plot(rand(5,1)) subplot(3,1,2) plot(rand(5,1)) subplot(3,1,3) plot(rand(5,1)) 주어진 그림은 다음과 같다. 아래 코드를 통해 공통 레이블 코드 구현 # subplot들의 레이블에 대한 visualization 옵션 끄기 f_all=axes(f,'visible','off'); # 전체 그림에 대한 visualization 옵션 켜기 f_all.Title.Visible='on'; f_all.XLabel.Visible='on'; f_all.YLabel.Visible='on'; # 라벨 입력 xlabel(f_all,'My Xlabel'); ..
MATLAB에서 array2table을 사용하면 행렬을 테이블로 변환할 수 있다. >> a = rand(4, 2) >> a = 0.9575 0.9572 0.9649 0.4854 0.1576 0.8003 0.9706 0.1419 >> table = array2table(a) >> table = 4×2 table a1 a2 _______ _______ 0.95751 0.95717 0.96489 0.48538 0.15761 0.80028 0.97059 0.14189 array2table을 통해 변환된 테이블의 변수 명을 지정하기 위해서는 아래와 같이 작성하면 된다. >> table = array2table(a, 'VariableNames',{'myvar1','myvar2'}) >> table = 4×2 tab..