나름 유명한 유머입니다. 이 유머의 포인트는 느낌표를 강조로 보느냐 factorial로 보느냐에 있습니다. 이과의 관점에서는 이라서 옳은 답이고, 문과의 관점에서는 이라야 옳은 답이 됩니다. 이런 유머가 가능한 숫자는 40, 32, 4 외에도 더 있습니다. 예를 들어 아래와 같은 조합도 가능합니다. [문제1] A - B÷2 = C!의 형태로 동일한 유머가 가능한 10000 이하의 자연수 A, B, C는 총 몇 쌍이 있을까요? 답은 총 3쌍입니다. 여러분도 한번 찾아보세요! [문제2] A - B÷D = C!의 형태로 동일한 유머가 가능한 2 이상 100 이하의 자연수 A, B, C, D는 총 몇 쌍이 있을까요? 역시 답은 총 3쌍입니다. 여러분도 한번 찾아보세요! - 게으른
한줄요약: 함수명 뒤에 괄호를 쓰고 1초만 기다려보자. 자주 쓰는 함수가 아니면 사용법이 생각나지 않을 때가 있습니다. 사실 자주 쓰는 함수도 종종 헷갈립니다. 예를 들어... - interp1의 인자를 어떤 순서로 쓰더라? method가 먼저던가, extrapolation이 먼저던가? - polyfit에 인자가 몇 개 들어가지? - randi에 max 값이 먼저였나? 아니면 행렬 크기가 먼저였나? 이럴 때 쓰는 방법이 몇 가지 있습니다. 가장 확실한 방법은 명령 창에 아래처럼 쓰는 것입니다. >> doc randi 도움말 창이 뜨면서 randi 사용법 문서를 볼 수 있습니다. 이 정도까지는 필요없고 간단히 사용법만 보고 싶다면 명령 창에 아래처럼 쓰면 됩니다. >> help randi 이보다 더 빠른 ..
단축키는 중요할 수도 있고 아닐 수도 있습니다. 하지만 자주 쓰는 기능의 단축키를 알아두면 분명 도움이 될 겁니다. 제가 자주 쓰는 단축키를 모아봤습니다. (주의: 본 글은 gif가 많습니다.) 0. 한장요약 1. 코드 전체 실행: F5 2. 코드 실행 중 디버그 모드 진입: CTRL + F5 - Breakpoint(중단점)과 기능적으로 동일합니다. - 프롬프트의 K>>는 키보드 입력이 가능함을 의미합니다. 3. 디버그 끝, 코드 실행 계속: F5 - 멈췄던 부분에서 이어서 실행을 계속합니다. 4. 디버그 중 코드 실행 종료: SHIFT + F5 - 코드 실행을 완전히 중지합니다. 5. 코드 실행 강제종료: CTRL + C - 명령 창에서 CTRL + C를 누르면 됩니다. 6. 변수명 일괄 변경: SHI..
흥미로운 질문을 받았습니다. 아래와 같은 구조체에서 파일명(필드명 name)이 'main.m'인 인덱스를 뽑아내려면 어떻게 할까요? 당연히 for 문을 돌리면 해결되긴 합니다만, 한줄컷으로 끝낼 방법이 있습니다. 1) {files.name}과 같은 표현식을 이용하면 files의 모든 .name 값을 하나의 셀배열에 담을 수 있습니다. 2) cellfun은 셀배열의 모든 원소에 동일한 함수를 적용하여, 그 결과를 같은 크기의 배열로 반환합니다. 3) cellfun에 쓸 함수가 이미 존재하는 함수가 아니라면 함수를 만들어서 쓰면 됩니다. 파일을 만들기 귀찮다면? 우리에겐 익명함수가 있습니다. 아이디어를 주신 MATLAB 공부방 이*규님께 감사말씀 드립니다. - 게으른 맽랩
cell array를 활용하는 특별한 방법 두 가지를 소개합니다. 1) structure array의 특정 field 값을 모두 가져오고 싶을 때 현재 폴더 내에 있는 모든 tif 파일의 목록은 아래처럼 불러올 수 있습니다. files는 크기가 5x1인 structure array이고 name, folder... 등 6개의 field를 가지고 있습니다. 이 array에서 모든 원소들의 name을 어떻게 가져올까요? files.name을 하면... 이렇게 각 원소의 name을 따로따로 다섯 번 가져온 꼴이 됩니다. 따라서 ans에는 마지막 원소의 name만 남습니다. 그럼 변수에 넣어볼까요? 변수에 넣어보려고 했더니 이렇게 첫번째 원소의 name만 가져옵니다. 물론 이 문제는 for문을 쓰면 쉽게 해결되지..
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..