아래 버튼을 누르면 아래 액션들이 순차적으로 일어납니다. 1. MATLAB Online이 열립니다.2. 제 깃헙의 MLDL_via_matlab이라는 repository가 MATLAB Online에 복사됩니다.3. 해당 repository의 knn_example.mlx 파일이 MATLAB Online에서 열립니다. 동작 원리(?)는 아주 간단합니다. 우선 repository를 MATLAB Online로 가져와서 열기 위한 링크를 만들어야 합니다. 자세한 내용은 이곳을 보시면 됩니다. 간단히 설명해보자면, 링크는 아래와 같이 생겼습니다. https://matlab.mathworks.com/open/github/v1?repo=/ authorname에 유저명을, reponame에 repositor..
FileExchange에서 재밌는 함수를 찾았다. 이곳에서 확인할 수 있다. 개발자는 undocumented matlab으로 유명한 Yair Altman. 매트랩의 명령 창 텍스트 출력은 기본적으로 검은 색의 plain text이다. 그나마 하나 있는 자유도는 텍스트를 빨간색으로 할 수 있다는 것인데... cprintf를 이용하면 임의의 색깔로 출력할 수 있다. 게다가 bold체도 되고 밑줄도 된다. 기본적으로 문법은 cprintf(style, format, A1, ..., An) 이다. style만 빼면 fprintf와 동일하며, 동작방식도 완벽히 동일하다. 추가된 것은 style인데, 여기에 색깔, bold 여부, 밑줄 여부를 지정할 수 있다. style에 Text, Keywords, Comm..
이 글은 정규식 삽질의 기록이며, 나중에 내가 같은 패턴을 쓸 일이 있을 때 찾아보기 위함이다. (1탄 보러가기) 0. 요약 • 어떤 텍스트가 '숫자4개_숫자4개' 꼴인지 보려면?~isempty(regexp(str, '^\d{4}_\d{4}$', 'once'))• 여기서\d는 숫자 하나\d{4}는 숫자 4개캐럿은 문자열이 그걸로 시작하는지 확인딸라는 문자열리 그걸로 끝나는지 확인이다. • isempty를 써야 하는 이유는? regexp의 결과로 빈 배열이 나올 수 있기 때문 1. 하려고 했던 것 • 파일명 쓰기 귀찮아서 아무 파일명으로 저장한 이미지 파일들을 일괄로 변경하고 싶었다.• 예를 들어 2024년 6월 1일에 수정한 파일이라면 '2024_0601.png'로 바꾸고 싶다.• 챗gpt가 이런 건 ..
예전부터 궁금했다. 행렬을 수평으로 합치고 싶으면 아래처럼 쓰면 되고, >> A = rand(3, 2);>> B = rand(3, 3);>> [A, B]ans = 0.1450 0.3510 0.0760 0.1839 0.0497 0.8530 0.5132 0.2399 0.2400 0.9027 0.6221 0.4018 0.1233 0.4173 0.9448>> 수직으로 합치고 싶으면 아래처럼 쓰면 되는데, >> A = rand(3, 2);>> C = rand(4, 2);>> [A; C]ans = 0.4909 0.9001 0.4893 0.3692 0.3377 0.1112 0.7803 0.096..
이 글은 정규식 삽질의 기록이며, 나중에 내가 같은 패턴을 쓸 일이 있을 때 찾아보기 위함이다. 매번 느끼지만, 정규식은 문제마다 솔루션이 다르게 존재하는 느낌이다(...). 100개의 문제가 있으면 솔루션도 100개인 느낌이랄까. 요약• regexp는 모든 occurrence를 찾는다. 첫 번째 occurrence만 찾으려면 'once' 옵션을 사용한다. idx = regexp(str, pattern, 'once');• regexp는 기본적으로 인덱스를 반환한다. 문자열을 받고 싶으면 'tokens' 옵션을 사용한다. 이때 2, 3번째 반환값은 startIdx와 endIdx이다. 매칭이 N개이면 startIndx와 endIdx의 길이도 N이다.[matches, startIdx, endIdx] = reg..
현재 폴더의 하위 폴더뿐만 아니라, 그 아래의 폴더, 그 아래아래의 폴더까지 모두 찾고 싶었다. 한참 고민했다. 재귀적으로 찾아야 하나? 재귀는 코드 짜기 귀찮으니까 어떻게든 while로 되지 않을까? ... ... 역시 검색을 잘 해야 한다. https://www.mathworks.com/matlabcentral/answers/448850-list-of-all-subfolders-and-theire-subfolders-etc 현재 폴더 아래의 모든 폴더와 파일을 찾고 싶다면 아래 한 줄이면 된다. d = dir('./**'); 하지만 이 중에는 '.'와 '..'가 폴더 개수만큼 들어있다. 아래 줄을 추가하여 이들을 제거할 수 있다. d = d(~ismember({d.name}, {'.', '..'}))..
MATLAB R2024a Prerelease가 나왔습니다. Release note를 보고 자주 또는 종종 사용할 것 같은 것만 몇 가지 추려봤습니다. 1. 자유로워진 로컬 함수의 위치 로컬 함수를 코드 중간에서 정의할 수 있게 됩니다. 다만 if, for와 같은 conditional context 내에서는 정의할 수 없습니다. 2. Check spelling 기능 툴스트립-VIEW의 오른쪽 끝에 있습니다. 라이브 에디터의 텍스트, M-파일의 주석에서 파란색 밑줄로 보여줍니다. 3. createArray 함수 createArray를 이용하여 특정 클래스의 행렬을 만들 수 있습니다. 예전에는 클래스마다 초기화된 행렬을 만드는 방법이 달랐습니다. 4. arguments 블록 자동완성 이 상태에서 아래의 sug..
심심해서 매트랩으로 게임을 하나 만들어봤습니다. Coin Sort라는 게임을 하다가 "이거 매트랩으로 비슷하게 만들 수 있겠는데?" 싶었거든요. 코드는 깃헙 페이지에서 받으실 수 있습니다. 룰은 간단합니다. ● number_stack_game을 실행하면 게임이 시작됩니다. ● 아래 중 하나를 입력할 수 있습니다. ○ 엔터: 숫자가 내려와서 보드를 채웁니다. ○ 숫자숫자(예: 12, 53): 첫 번째 숫자 열에서 두 번째 열로 숫자를 옮깁니다. ■ 첫 번째 열의 맨 위와 두 번째 열의 맨 위는 같은 숫자여야 합니다. ■ 같은 숫자들의 덩어리 단위로만 옮깁니다. ■ 그냥 한번 해보시면 압니다. ○ m: merge를 뜻합니다. 한 가지 숫자로 꽉 찬 열이 있다면 1만큼 높은 숫자 2개로 바꿉니다. ■ 열이 4..
이 글은 성공기보다는 실패기에 더 가깝다. 어쨌든 삽질의 기록이라도 남겨두고자 한다. 인터넷 기사를 읽다 보면 "오, 이 사람 글 재밌는데?"라는 생각이 들 때가 있다. 그래서 그 사람이 쓴 글을 검색해서 찾아 읽는다. 그런데 이 검색이 잘 되지 않아 종종 답답하다. 동아사이언스에서 재밌는 글을 읽었다. 하버드 의대생도 틀리는 문제?라니... 일단 기사 제목부터 낚시성이 짙은 것이 확 끌리지 않는가? 제목을 보아하니 시리즈물인 것 같다. 글쓴이는 정신과 전문의 박한선 씨라는데, 꽤 오랫동안 글을 올리고 있는 듯 하다. 이 분의 글을 더 읽고 싶어서 기사 맨 밑에 있는 "모든기사보기"를 클릭했으나 동작하지 않는다. 안되잖아? 이럴 땐 뭐다? 어... 만족스럽지 않다. 일단 이 분, 글을 너무 많이 썼고 너..