for문은 보통 다음의 Code 1과 같은 방법으로 많이 사용됩니다. % Code 1 % % For a given vector, generate % a new vector whose element is % 1 when the element of the given % vector at the same position is % greater than 0.5, otherwise 0. % % 벡터 a가 주어졌을 때, a의 각 요소가 % 0.5보다 크면 1, 그렇지 않으면 0인, % a와 크기가 같은 새 벡터를 생성하라. a = rand(1,10); b = zeros(size(a)); for i = 1:length(a) if a(i) > 0.5 b(i) = 1; end end 즉, 벡터 a의 길이만큼 반복문을 수..
저는 에디터에 파일을 많이 띄워두는 편입니다. 아직 작업이 끝나지 않은 파일은 당장 쓰지 않더라도 띄워놔야 나중에 작업을 이어갈 수 있기 때문인데요. 가끔 실수로 에디터 창을 닫을 때가 있습니다. 요즘 웹브라우저는 마지막 세션을 그대로 복구할 수 있지만, 매트랩의 에디터는 그런 기능이 없습니다. 결국 기억을 더듬어서 파일을 하나씩 여는 수밖에 없습니다. 이런 사태를 방지하려면 사용자가 조심해서 써야 합니다만... 다행히 에디터를 복구할 방법이 있습니다. 매트랩이 설정파일들을 따로 모아두는 폴더가 있는데, 그 폴더에 xml 파일의 형태로 마지막 세션과 현재 세션의 m파일들이 담겨있습니다. 이 파일 정보만 꺼내서 복구할 수 있습니다. 아래는 그 복구코드입니다. (원본: kr.mathworks.com/matl..
로또 프로그램을 짜봤습니다. 6개 숫자를 입력으로 넣으면 난수 6개를 생성해서 몇개나 맞췄는지 출력해줍니다. 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 function n = lotto(mypick) mypick = sort(mypick); if sum(diff(mypick)==0)>0 warning('너는 첫판부터 장난질이냐?') n = -1; return end theirpick = sort(randperm(45,6)); fprintf('Your picks are: '); fprintf('%d\t', mypick); fprintf(newline) fprintf('They picked as: '); fprintf('%d\t',t..
규모가 작지 않은 프로젝트를 하다보면, 필히 여러 개의 m파일을 사용하게 됩니다. 용이한 관리를 위해 기능별로 함수 파일을 따로 만들기도 하고, 평소에 자주 쓰는 기능을 함수로 만들어 둔 것을 가져와서 쓰기도 합니다. 문제는 이 프로젝트를 배포하거나 통채로 다른 pc로 옮겨야 할 때 발생합니다. Dependency가 있는 파일들만 골라서 압축할 수 있다면 프로젝트를 배포하기 굉장히 편해질 것입니다. Program dependency를 확인하는 기능은 이미 매트랩에 있습니다. kr.mathworks.com/help/matlab/matlab_prog/identify-dependencies.html 여기에 압축파일을 만드는 zip 함수만 이용하면, 아래와 같이 간단하게 코드를 짤 수 있습니다. 1 2 [fLi..
figure나 axes의 colormap은 보통 64x3 행렬 형태로 들어있습니다. 실제로 어떤 colormap이 적용됐는지 알기 어렵죠. 그래서 첨부와 같이 만들어보았습니다. handle을 입력으로 넣으면 어떤 colormap인지 string으로 반환해줍니다. 2019년 12월 22일 현재 18개의 colormap이 있습니다. 이 18개에 해당되지 않으면 "unknown"을 반환합니다. 자유롭게 사용하시되, developer 정보는 남겨주세요. 게으른맽랩
요즘 이딴 식을 다루다 보니 matlab에 제대로 타이핑을 했는지 한참을 보게 됩니다. 안 그래도 하루하루 눈이 침침해지는데 말이죠... (잠깐 눈물 좀 닦고...) Matlab의 latex 기능을 활용해서 수식을 latex form으로 확인할 수 있는 코드를 작성해보았습니다. 위 파일을 적당한 곳에 두고 아래처럼 작성하면 아래처럼 그림이 뜹니다. 간단한 도움말은 파일 내에 적어두었습니다. 배포는 자유이지만 작성자명은 지우지 말아주세요. - 게으른 맽랩 ==== 궁극적으로는 아래와 같은 더러운 식도 한번에 보는 게 목표입니다만, 일단 식이 길어서 창 크기 또는 fontsize를 조절해야 하고, greek character를 어떻게 표기할 지 문제가 남아있습니다. 방법을 연구해보겠습니다. 해결책을 찾으면 ..
제가 활동(?) 중인 카톡 오픈방 "MATLAB 공부"에서 아래와 같은 주제로 설문조사를 시행했습니다. "내가 선호하는 매트랩 공부법은?" 무려 34명이 참여해주셨고, 결과는 아래와 같았습니다. 나름대로 분석을 해보자면... 1. 생각보다 동영상 및 인강이 인기가 없었습니다. 이유가 궁금하네요. 필요한 부분만 골라볼 수 없어서? 한번 보는 데 오래 걸려서? 무슨 말인지 이해할 수 없어서? 좋은 영상이 없어서? 2. 일단 쓰면서 모르면 help 검색이 많았습니다. 하지만 그와 동시에 help를 봐도 모르겠다는 분들이 많았습니다. 제가 봐도 매트랩의 help는 교육자료라기보단 일종의 reference 성격이 짙습니다. 게다가 번역도 그다지 만족스럽지 못하더군요. 좀 더 친절한 help를 만드는 것도 재밌겠다..
네, 있습니다. 바로 end라는 키워드입니다. Code 1.sub_a = a(3:end); % a의 3번째~끝까지의 element를 sub_a에 저장합니다. sub_b = b(3:4,2:end); % b의 3~4번째 행, 2번째~마지막 열에 해당하는 행렬을 sub_b에 저장합니다. 당연히 b가 1차원 행렬일 경우 Code 1의 두 번째 줄은 에러가 뜹니다. 위 코드는 Code 2처럼 쓸 수도 있지만, 여러모로 end를 쓰는 것에 비해 장점이 없습니다. Code 2. sub_a = a(3:length(a)); sub_b = b(3:4,2:size(b,2)); end를 쓸 수 있으면 아래와 같은 활용이 가능합니다. Code 3. Y = X(2:2:end-1); % X의 짝수번 째 element를 Y에 저장,..