전체 글 16

MATLAB - M map

MATLAB으로 시각화를 하다보면, 때로는 지도를 그려야 하는 경우가 생긴다. 이때 매우 유용한 것이 M-map이다. 모르면 손해고, 알면 매우 좋다!!!! 그러니 이번 글을 정독하고 M-map을 꼭 사용할 수 있길 바란다. M-map Toolbox는 MATLAB에서 기본적으로 제공하는 기능이 아니라, 어떤 귀인께서 직접 만들어서 배포해주시는 toolbox이다. 이번 글은 해당 toolbox를 직접 다운받고 사용해보는 방법을 소개한다. 링크: https://www.eoas.ubc.ca/~rich/map.html M_Map: A Mapping package for Matlab A mapping package for Matlab You have collected your data, loaded it into..

MATLAB - TXT & CSV 파일 읽기

이전 글에서는 Excel, NC 파일을 다루었고, 이번 글에서는 TXT, CSV를 다루고자 한다. TXT, Dat, CSV를 읽어들이는 방법은 서로 매우 유사하다. fnm = ‘filename.txt’; fid = fopen(fnm,'r'); data = textscan(fid, '%d %f %s', 'HeaderLines', 1); time = data{1}; % 중괄호 사용하기! 과제 1 DOWNLOAD 바다누리 : http://www.khoa.go.kr/oceangrid/gis/category/reference/distribution.do (바다누리 사이트에는 회원가입 후 로그인을 해야 데이터를 다운받을 수 있다.) 조위, 수온, 염분을 시계열로 나타내세요. Hint 1. textscan 함수 – ..

MATLAB - Scatter vs Pcolor

scatter는 점을 찍는 함수이고 pcolor는 색을 칠하는 함수이다. scatter는 여러 정점들에 대한 data값을 각각 나타내는 작업에 있어서 매우 직관적이고 효과적이다. 각 정점에 대해서 x, y 값이 주어진다면 그 위치에서 점의 색으로 data의 값을 표현하기 때문이다. 그런데 pcolor는 점이 아니라 면의 색을 칠한다. 일반적으로 우리가 다루는 raw data에는 기본적으로 정점에 대한 정보(data)만 있을 뿐, 면에 대한 정보는 없다. 그렇다면 pcolor 함수는 각 면에 대하여 도대체 무슨 색을 칠하는 것일까? 다음은 같은 데이터에 대하여 scatter와 pcolor로 각각 나타낸 것이다. 두 그림을 비교하여, pcolor의 각 면에 칠해진 색이 어떤 값을 반영하고 있는지 직접 확인할..

MATLAB - NC 파일 읽기 - 해양 산성화

NC 파일이라고 하면, 사실 처음 접하는 사람도 많다. NC 파일은 간단히 말해서, 2차원 데이터가 아닌, 3차원 이상(경도, 위도, 시간, 수온 값 등) 의 데이터를 저장하기 위한 파일 형식이다. 그래서 컴퓨터 상의 폴더 창에서 NC파일을 더블클릭한다고 해도, (컴퓨터는 열과 행으로 이루어진 2차원밖에 보여주지 못하므로,) 아무것도 안 나온다. 오늘은 그 NC 파일 내에 저장된 데이터를 다루고자 한다. DOWNLOAD 코페르니쿠스 (CMEMS) 사이트는 앞으로 자주 사용하게 될 유용한 사이트이다. 회원가입을 먼저 해야 하니, 다운 받기 전에 미리 해두면 좋다. Download Link : https://data.marine.copernicus.eu/product/GLOBAL_MULTIYEAR_BGC_0..

MATLAB - Excel 파일 읽기 : 해양 산성화

지금까지는 기본적인 MATLAB 사용법에 대해 블로그 글을 썼다. 그리고 이후부터는 MATLAB을 이용하여 해양 관련 데이터를 직접 읽어들이고, 시각화하는 것을 다루고자 한다. 다만, 코드를 바로 알려주는 것이 아니라, 직접 데이터를 다운받아보고 밑에서 제시한 결과물과 직접 동일하게 만드는 연습을 함으로써 본인 스스로의 실력을 길렀으면 한다. 보고 베끼는 것은 Chat GPT나 Bing 등 여러 AI 툴로도 충분히 할 수 있는 일이지만, 결국 어느 정도 수준 높은 코드를 작성하기 위해서는 본인의 실력 자체를 길러야 한다. 기초 수준에서 조금만 벗어나더라도 Chat GPT나 Bing은 질문도 이해를 못하고, 제대로 된 코드도 작성 못한다. 그리고 본인의 MATLAB 실력을 키울 수 있는 것은 무엇보다도 본..

MATLAB - Plotting

맨 처음에는 ‘clc; clear; close all’을 적는다 ※ 제발 좀 적어줬으면 좋겠다. 코드가 짧으면 상관없지만, 코드가 길어지면 나중에는 어디서 에러가 났는지 몰라서, 디버깅 하는 게 매우 골치아파진다. 그냥 적어라. 맨 처음에 적는다고 머릿속에 박아넣으면 된다. 다 본인을 위한 거다. clc : 명령창을 지우는 명령어 (작업 환경을 깔끔하게 만들어 준다.) clear : 작업공간을 지우는 명령어 (메모리 효율을 높여 준다.) 지금까지는 clc; clear;만 이야기 했었다. 그런데 지금부터는 MATLAB으로 그림을 그리기 때문에, 실행을 시키면 ‘ figure창 ’이 뜨게 될 것이다. 코드를 작성하고 시행착오를 반복하면서, 이 figure 창을 매번 일일이 닫을 수 없으니, close all..

MATLAB - 제어문

제어문은 쉽게 말해, 코드의 전반적인 흐름을 결정짓는 구문으로, 세부적으로는 반복문, 조건문 등이 있다. 반복문, 조건문 그리고 논리연산자는 인덱싱만큼이나 MATLAB에서 상당히 중요하다. 그러니 차근차근 기본을 다져보자. For 문 : 반복문 주어진 조건 하에서 반복 명령을 수행하라!!!! start부터 end까지 step씩 증가한다. 한 번 step이 증가할 때마다 'for문 안의 내용'이 반복 된다. for index = start : step : end 반복되는 내용 end 다음 예시를 보도록 하자. 아래 코드는 1부터 10까지 i라는 변수가 (for문을 한 번 돌 때마다) 1씩 커지게끔 하는데, 그때마다 변수 i의 값을 명령창에 출력하도록 하는 것이다. (disp라는 함수는 괄호 안의 내용을 명..

MATLAB - 배열 Array

모든 MATLAB 변수는 배열이다. 그렇기 때문에, 배열이 무엇인지 이해하는 것은 매우 중요하다. 아래 그림을 보자. (출처 : Mathworks Onramp, 이후에 나오는 여러 그림들 또한 Mathworks Onramp의 그림을 인용하였다.) 그림에 나온 것처럼, 가장 큰 개념이 Array이다. 그 아래에 크게 3가지 종류가 있다. 1. 1 x 1 : Scalar 2. m x 1 또는 1 x n : Vector 3. m x n : Matrix 그렇다면 MATLAB에서는 Array를 어떻게 만들까? 그 방법은 매우 간단하다. 1. Scalar x=4; 2. Vector 2-1) Vector의 내부 값을 일일히 입력하기 세미콜론 (;)으로 열을 구분한다. x = [ 3 5 ];% 행 벡터 y = [ 3 ..

MATLAB 시작 - 4 : 실습

앞서 올린 글에서 강조하였듯이, 모든 코드에 있어서 무조건 맨 앞에 clc; clear; close all; 을 적어라. 변수 만들기 변수를 만들어보자. 변수는 어떻게 만들까? 어렵지 않다. 그냥 적으면 된다. A = 10 이걸 실행시키고 작업공간을 확인해보자. A라는 변수에 10이라는 숫자가 할당되었음을 알 수 있다. 어떤 변수를 만들고 싶다면, 별 다른 작업 없이 이렇게 그냥 적으면 된다. 이때, =은 '같다'는 뜻이 아니라, '대입(할당)'한다는 뜻이다. 만약 수학적 의미로 '같다'라고 하고 싶다면, '=='을 사용해야 한다. 세미콜론 (;) 편집기에 A=10 을 적은 다음 실행시키면, 명령창에도 A=10이라고 뜬다. 그러고 나서 A=10; 이라고 편집기에 적고 실행시켜보자. 그러면 명령창 A=10..

MATLAB 시작 - 3 : 주석 달기 & 퍼블리시 기능

주석 달기 코드를 작성하면, 종종 다른 사람들과 코드를 공유하는 일이 생긴다. 혹은 본인이 옛날에 만들었던 코드를 다시 보아야 하는 경우가 생긴다. 그런데 코드를 보았을 때, 특정 함수 또는 변수가 어떤 기능을 하고, 무엇을 의미하는 지 모른다면 곤란해질 것이다. 이를 위해 MATLAB에서는 기능을 제공하고 있다. 은 코드를 실행시켜도, 실행되지 않고 무시되는 부분이다. 아래의 예시를 보도록 하자. 을 쓰고 싶으면, 위 그림에 나온 것처럼, % 를 적고 그 뒤에 내가 원하는 설명을 적으면 된다. 그리고 %%를 두번 적고, 한 번 띄운 다음, 문장을 적으면 섹션Section이 구분된다. 코드 상에서 가로로 선이 그어져서 윗 부분과 아랫 부분이 구분되어져 있는 것을 확인할 수 있다. 이렇게 Section을 ..