간만에 보안공학 덕분에 matlab을 다시 만지게 되었습니다.
그러나 matlab에서의 세미콜론은 다른 역할을 합니다. 다음은 같은 명령어지만 세미콜론이 있고 없고에 의한 차이를 보여주는 화면입니다.


위의 C코드에서 1이 저장된 것을 불러오려면 x[0]으로 써줘야합니다.
그런데 matlab에서는 그 딴 거 없습니다.

왠지 생각해보니 제가 matlab을 배워서 점점 코딩실력이 줄어드는 건 아닌가 싶기도 하지만, 원래 코딩을 잘 하지 않았으니 줄 실력도 없지만, 저렇게 '되겠지?'라고 하면 되는 모양새를 보면 놀랍습니다.

작년에 교양으로 인정받았지만 수학과 수치해석을 들어놓기를 잘 했다는 생각이 드네요.
블로그가 너무 죽어가는 것 같아서 말도 안 되는 시리즈인
'matlab 헷갈리는 것들'이라는 글을 적게 되었습니다.
물론 도움이 되기보다는 그냥 기록적인 측면이 강하지만요!
그리고 진짜 제대로 강의 쓰듯이 하는 분들에 비해서는 이건 뭣도 아닌 모습이지만
시작합니다!
- 매트랩matlab은?
수학 푸는 프로그램입니다. 지금 와서 matlab이 뭐다 뭐다 하기에는 그리; 다만 이 글을 적는 이유는 matlab이 프로그래밍 언어와 문법이 거의 비슷해보이나, 좀 더 인간친화적(?)이라 오히려 C언어 등의 언어에 익숙하신 분들은 대강 보고 '비슷하네'라고 짜다가 실수 할 수 있는 부분들이 있어서 이 글을 시작합니다.
- 세미콜론(semicolon)? ; 이거 말하는 거 맞지? 이게 뭐?
영어 문법에서는 다양한 접속사와 관계대명사를 대신해서 쓰일 수 있는 세미콜론! 이런 이야기는 생략하고 우선 프로그래밍 언어에서 세미콜론, 특히 C에서는 한 명령어가 끝나는 것을 나타내주는 표시였습니다. 그래서 오히려 C프로그래밍을 하다가 실수로 세미콜론을 빠트려서 에러를 자주 냈죠.
int x=1;
x=x+1;
그러나 matlab에서의 세미콜론은 다른 역할을 합니다. 다음은 같은 명령어지만 세미콜론이 있고 없고에 의한 차이를 보여주는 화면입니다.

뭔 차이냐!
라고 하실지 모르지만, 사실 matlab에서는 세미콜론이 없어도 명령어가 아주 멀쩡히 실행됩니다.
다음을 보면 세미콜론에 의해서 그 결과가 나오지 않지만, 정작 확인하면 결과가 나오는 것을 볼 수 있습니다.

매트랩은 따로 출력(cout이나 fprintf 등)에 필요한 명령어 없이 변수 이름만을 치는 것으로 볼 수 있습니다. 정말 세미콜론, 별 거 아니지만 다른 언어와 다른 기능을 하는 모습이었습니다.
- index
다음은 인덱스입니다.
처음 프로그래밍 언어에 입문해서 오히려 헷갈리는 게, array나 list에서 가장 첫번째 값을 호출하려면 index를 0으로 줘야했습니다!
근데 matlab은 사람 중심(?)적이기때문에 0이 아니라 그냥 1입니다. 근데 이게 프로그래밍 언어를 배우지 않은 상태로 들으면 당연한 건데, 프로그래밍 언어를 배우면 헷갈려집니다. 이건 도대체 뭔 소리야... 라는 느낌이 되죠.
int x[4]={1, 2, 3, 4}
그런데 매트랩에서는 좀 다릅니다.

그냥 정말 첫번째 entity를 불러오려면 그냥 1을 쓰면 됩니다. 게다가 약간 문법적 차이지만 각괄호[]가 아니라 둥근 괄호()를 쓰는 것을 볼 수 있습니다. 이게 묘하게 헷갈리는 차이입니다.
- type
C언어를 처음 배울 때, char, int, float, double 등등의 data type을 배웠습니다.
int x;
char x;
그런데 matlab에서는 그 딴 거 없습니다.
전혀 type 선언 없이 값을 넣어주면, 알아서 처리합니다.

심지어 string까지 처리해줍니다. 근데 여기서 꽤 놀라운 것은 C에서는 array를 동적으로 쓰기 위해서는 좀 이리저리 써주거나 포인터를 이용해서 동적할당 해주거나 해야했는데(저는 그래서 그냥 처음부터 많이 잡는 식으로 했죠), matlab은 그런 것도 없습니다.

참고로 같은 변수 이름이더라도 type이 다르더라도 값을 넣어줄 수 있습니다.

어쩌면 별 거 아니지만, 은근히 모르면 매트랩에 애먹는 것들을 적어봤습니다. 이번 학기에는 계속 matlab 과제를 하게 될 것 같으니 블로그에 좀 끼적여보려고요. 요새 좀 개인적으로 바빴던 일도 끝났고요.
덧글
명림어수 2012/03/15 08:20 # 삭제
세상 2012/03/17 10:55 #
악마재성 2012/05/01 14:24 #