본문 바로가기
반응형

코딩26

[매트랩] 여러 행렬을 원소로 갖는 자료구조 (셀 배열) 두개의 행렬을 생성합니다.  a=[1,2 ; 3,4];b=[10,20 ; 30,40];배열을 정의하고 원소로 넣어줍니다.  carr={a,b};배열 원소에 접근하는 방법은 아래와 같습니다.  >> carr{1}ans = 1 2 3 4 2024. 5. 5.
[matlab 공부하자] 42.파일 너무 많이 열려있다고 에러났을 때 해결방법 42.파일 너무 많이 열려있다고 에러났을 때 해결방법 for문에 fclose('all'); 얘 넣어주면 됨 2019. 7. 4.
[matlab 공부하자] 41.for 문의 i를 문자로 이용하는 방법 41.for 문의 i를 문자로 이용하는 방법 for i=1:1001 filename=strcat(num2str(i,'%.4d')); 2019. 7. 4.
[matlab 공부하자] 40.matlab에서 txt 파일 저장하는 방법(fopen, fprintf) 40.matlab에서 txt 파일 저장하는 방법(fopen, fprintf) 먼저 fopen 이라는 함수에 대해 이해해봅시다. 우리가 기존에open.txt 라는 파일이 저장되어 있다고 해봅시다. 파일의 내용은 1 2 3 4 5 가 들어있다고 해볼게요. fopen 함수는 파일을 불러와서 파일에 ID를 할당해주는 함수입니다.아이디가 할당되면 fscanf 를 이용해서 파일 안에 있는 내용을 볼 수도 있고fprinf를 이용해서 파일 안의 내용을 수정할 수도 있습니다. fopen 함수는 우리가 파일에 접근할 수 있도록 파일과 다른 함수를 연결해주는 ID를 할당해 주는 함수라고 이해하시면 됩니다. open.txt에 fopen 함수를 적용해보겠습니다. >> fopen('open.txt') ans = 5 이렇게 5라는.. 2019. 7. 3.
[matlab 공부하자] 39.특이값 분해(singular value decomposition), svd함수 39.특이값 분해(singular value decomposition), svd함수 특이값 분해는어떤 행렬을 세 행렬의 곱으로 분해하는 것입니다. 말 그래도 분해에요. matlab에서는 svd라는 함수가 사용됩니다. x라는 행렬을 정의하고 함수에 넣습니다. 아래와 같은 형태로 넣어주셔야 해요. [U,S,V] = svd(x) U와 V는 unitary 행렬입니다. 자기 자신의 transpose와 곱하면 항등행렬이 나오는 행렬을 unitary 행렬이라고 합니다. 아래 수식이 성립하죠. U*U'=IV*V'=I S는 diagonal matrix입니다. 예를들면 아래와 같은 행렬이에요. S = 16.8481 0 0 0 1.0684 0 0 0 0.0000 중앙대각선에만 값이 존재합니다. 분해의 결과를 말씀드릴게요. .. 2019. 7. 3.
[matlab 공부하자] 38.행렬, 문자열을 원소로 갖는 cell 함수를 사용해보자. 38.행렬, 문자열을 원소로 갖는 cell 함수를 사용해보자. [ ] 로 표현되는 행렬은 원소로 숫자만을 가질 수 있습니다. {} 로 표현되는 cell 함수는 행렬와 문자열을 원소로 가질 수 있습니다. 한번 사용해봅시다. >> a=cell(2,3) a = [] [] [] [] [] [] 각 cell 안에 행렬과 문자열을 넣을 수 있습니다. >> a{1,1}= [1 2 3;3 4 5] a = [2x3 double] [] [] [] [] [] 행렬이 a{1,1} 에 2x3 행렬로 바뀌었습니다. >> a{2,2}='asdf' a = [2x3 double] [] [] [] 'asdf' [] 2019. 7. 3.
[matlab 공부하자] 37.영어 문장을 전부 소문자로 만드는 함수와 대문자로 만드는 함수 (lower,upper) 37.영어 문장을 전부 소문자로 만드는 함수와 대문자로 만드는 함수 (lower,upper) >> a='GoOd bYe'; 문장을 전부 소문자로 만들어 봅시다. >> lower(a) ans = good bye 문장을 전부 대문자로 만들어 봅시다. >> upper(a) ans = GOOD BYE 2019. 7. 3.
[matlab 공부하자] 36.전체 문장에서 원하는 문자가 들어있는지 찾는 함수 (strfind) 36.전체 문장에서 원하는 문자가 들어있는지 찾는 함수 (strfind) strfind(문자열, '찾고싶은거') strfind 함수는 문자열에서 찾고싶은 문자를 찾아줍니다. 문자의 위치를 반환해줍니다. 예를 들어봅시다. >> a='i am in a cafe now';>> strfind(a,'cafe') ans = 11 2019. 7. 3.
[matlab 공부하자] 35.두 문자열을 비교 (strcmp) 35.두 문자열을 비교 (strcmp) strcmp(문자열1,문자열2) 는 두 문자열을 비교해서 같으면 1을 다르면 0을 반환해주는 함수입니다.한번 사용해보겠습니다. >> a='apple';>> b='apple';>> strcmp(a,b) ans = 1 2019. 7. 3.
[matlab 공부하자] 34.bsxfun 함수(두 배열간 원하는 계산을 수행) 34.bsxfun 함수(두 배열간 원하는 계산을 수행) bsxfun 함수는 두 배열간에 원하는 연산을 수행해주는 함수입니다.아래와 같이 표현합니다. bsxfun(@원하는 연산, 배열1, 배열2) 예를들어 두 배열의 차를 구하고 싶다고 해봅시다. 사실 차 같은 경우는 그냥 빼면되긴 하지만요. a=[1 2 3 4 5]'b=[10 20 30 40 50]' c=bsxfun(@minus,a,b); 실행 결과는 아래와 같습니다. >> c c = -9 -18 -27 -36 -45 이외에도 다양한 연산이 가능합니다. 아래 표를 첨부하였습니다. 2019. 7. 3.
[matlab 공부하자] 33. and 연산자 33. and 연산자 and 연산자는 & 인데, 두개의 피연산자가 참이면 1을 반환합니다. 피연산자가 참이라는 것은 값이 0이 아니라는 의미에요. 예를 들어보겠습니다. >> A=1;, B=1; A&B ans = 1 >> A=1;, B=0; A&B ans = 0 이해가 되시나요? 둘다 0이 아닐 때만 1을 반환합니다. 하나라도 0이면 0을 반환해요. 이번엔 조금 더 심화된 예를 들어봅시다. >> A=[1 2 0 0 1];B=[0 2 0 1 1]; A&B ans = 0 1 0 0 1 위와 같이 벡터나 행렬의 경우에는 각 요소별로 값을 반환합니다. 2019. 7. 3.
[matlab 공부하자] 32.magic 행렬 32.magic 행렬 magic 행렬은 어느 방향으로 더하던지 그 합이 같은 행렬입니다. 정방행렬(nxn)만 가능합니다. 예를 들어보죠. >> magic(3) ans = 8 1 6 3 5 7 4 9 2 >> magic(4) ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 2019. 7. 3.
[matlab 공부하자] 31.행렬에서 특정 행 또는 열을 제거하기 31.행렬에서 특정 행 또는 열을 제거하기 A=[1 2 3 ;4 5 6;7 8 9] 에서 1행을 제거해보겠습니다. >> A=[1 2 3 ;4 5 6;7 8 9] A = 1 2 3 4 5 6 7 8 9 >> A(1,:)=[] A = 4 5 6 7 8 9 이번에는 2열을 제거해보겠습니다. >> A(:,2)=[] A = 4 6 7 9 2019. 7. 3.
[matlab 공부하자] 30.format bank(소수 둘째 자리까지 표시), format rat (분수식 표현) matlab 공부하자 30.format bank(소수 둘째 자리까지 표시), format rat (분수식 표현) matlab 공부하자 format bank(소수 둘째 자리까지 표시) format rat (분수식 표현) 2019. 7. 3.
[matlab 공부하자] 29.원소들의 곱을 반환 (prod 함수) 29.원소들의 곱을 반환 (prod 함수) 원소들의 곱을 반환하는 함수입니다.벡터의 경우는 전체곱을 반환해주고 행렬의 경우는 조금 달라요. 먼저 벡터의 곱을 봅시다. >> a=[1 2 3] a = 1 2 3 >> prod(a) ans = 6 행렬의 경우에는 각 열의 곱을 반환해줍니다. >> b=[1 2 3;4 5 6;7 8 9] b = 1 2 3 4 5 6 7 8 9 >> prod(b) ans = 28 80 162 2019. 7. 3.
[matlab 공부하자] 28.행렬의 원소의 개수를 반환하는 함수 (numel 함수) 28.행렬의 원소의 개수를 반환하는 함수 (numel 함수) 행렬의 원소의 개수를 반환해주는 함수가 있습니다. numel 함수입니다. 한번 사용해보겠습니다. >> a=[1 2 3; 4 5 6; 7 8 9;10 11 12] a = 1 2 3 4 5 6 7 8 9 10 11 12 >> numel(a) ans = 12 2019. 7. 3.
[matlab 공부하자] 27.matlab 어디에 쓰나요? 27.matlab 어디에 쓰나요? 1. 수학과 관련된 계산2. 알고리즘 개발 (Text coding, Graphical coding)3. 상황 모델링과 data 분석4. 여러가지 과학과 공학적인 그래픽 표현5. GUI(Graphical User Interface)를 채택한 애플리케이션 개발6. 임의의 PC와 사용자가 개발한 Hardware 사이의 Link 제공 2019. 7. 3.
[matlab 공부하자] 26.함수의 부정적분 (int 함수) 26.함수의 부정적분 (int 함수) 간단한 함수를 선언하고 부정적분을 해봅시다. 이전에 배운 symbolic 자료형을 사용합니다. 먼저 x,y변수를 symbolic으로 선언합니다. syms x y 적분하고 싶은 함수를 선언합니다. y=x^2+3; 적분은 영어로 integral이죠? >> Y=int(y) Y = (x*(x^2 + 9))/3 이렇게 간단하게 부정적분이 계산됩니다. 엄밀히 말히면 이 적분을 한 것입니다. 2019. 7. 3.
[matlab 공부하자] 25. symbolic data type 25. symbolic data type matlab에는 symbolic 이라는 자료형이 있습니다. 보통 메트랩에서는 a=[1 3]; 이렇게 문자에 값을 지정해주는데요. symbolic같은 경우는 문자만 선언하고 변수로 사용할 수 있습니다. syms x 이런식으로 선언후 사용합니다. 2019. 7. 3.
[matlab 공부하자] 24.mod 함수 (나머지를 반환) 24.mod 함수 (나머지를 반환) 오늘은 나머지를 반환해주는 mod 함수를 배워봅시다. mod(5,4) 이렇게 쓰면5를 4로 나눈 나머지를 반환해줍니다. >> mod(5,4) ans = 1 벡터나 행렬을 넣어도 됩니다. >> mod([1,2,3,4,5],2) ans = 1 0 1 0 1 각 요소를 2로 나눈 결과를 반환해줬죠? >> a=[1 2 3;4 5 6] a = 1 2 3 4 5 6 >> mod(a,2) ans = 1 0 1 0 1 0 2019. 7. 3.
[matlab 공부하자] 6. find 함수 (심화) 6. find 함수 (심화) 이번에는 find함수에 조건을 붙여봅시다. 디폴트는 0이 아닌 값을 찾는 것이었는데. 0인 값만 찾으려면 어떻게해야 할까요? 이렇게 하면 됩니다. >> a=[1 2 0;0 3 4;5 6 0;0 0 9] a = 1 2 0 0 3 4 5 6 0 0 0 9 >> [row col]=find(a==0) row = 2 4 4 1 3 col = 1 1 2 3 3 0 뿐만 아니라 다른 숫자도 찾을 수가 있겠죠? 논리 연산자를 많이 알 수록 find 함수를 더 다양하게 활용할 수 있겠군요. 2019. 7. 1.
[matlab 공부하자] 5. find 함수 (기본) 5. find 함수 (기본) find 함수는 특정한 조건을 걸어주면 해당되는 행과 열을 찾아주는 함수입니다. 예를 들어볼게요. >> a=[0 2 1 5 3 0 2 4 0] a = 0 2 1 5 3 0 2 4 0 >> find(a) ans = 2 3 4 5 7 8 find(a)라는 함수를 썼는데 뭘 찾았죠?0 이 아닌 열을 찾았습니다. 2,3,4,5,7,8 열이 nonzero 값입니다. 디폴트가 뭔지 아시겠죠? 그냥 find 함수를 쓰면 0이 아닌 열을 찾아줍니다. 열만 찾아주는건 아니겠죠? 아래 예시를 보시죠 >> b = [1; 2; 0; 0; 1; 3; 0; 3] b = 1 2 0 0 1 3 0 3 >> find(b) ans = 1 2 5 6 8 이번에는 0 이 아닌 행을 찾아줍니다. ans가 세로로 .. 2019. 7. 1.
[matlab 공부하자] 4. size 함수 4. size 함수 size 함수는 행렬의 크기를 반환해주는 함수입니다. 예를들어보죠. >> A=round(10*rand(3,4)) A = 6 3 3 6 5 2 5 3 0 8 2 7 3행 4열의 행렬을 만들었습니다. size함수를 써보죠. >> size(A) ans = 3 4 이렇게 사용할 수도 있습니다. >> size(A,1) ans = 3 >> size(A,2) ans = 4 2019. 7. 1.
[matlab 공부하자] 3. rand 함수 3. rand 함수 rand 함수는 0~1 사이의 임의 값을 생성해주는 함수입니다. 한번 사용해보죠 >>rand(3) ans = 0.4898 0.7094 0.6797 0.4456 0.7547 0.6551 0.6463 0.2760 0.1626 0~1 사이 값을 같는 3x3행렬이 만들어졌습니다. 원하는 size의 행렬을 만들 수 있는데요. 2X3 행렬을 만들어 볼게요. >> rand(2,3) ans = 0.1190 0.9597 0.5853 0.4984 0.3404 0.2238 0~10 사이의 숫자를 만들고 싶으면 어떻게 하면 될까요? 10을 곱해주면 됩니다. >> 10*rand(2,3) ans = 7.5127 5.0596 8.9090 2.5510 6.9908 9.5929 0~10 사이의 정수를 만들려면??반.. 2019. 7. 1.
[matlab 공부하자] 2. 반올림 (round) , 올림(ceil), 버림(floor), 0을 향해 버림 또는 올림(fix) 2. 반올림 (round) , 올림(ceil), 버림(floor), 0을 향해 버림 또는 올림(fix) matlab에는 반올림을 해주는 함수가 내장되어있습니다. round라는 함수인데, 일단 한번 사용해봅시다. >>a=1.12424>>round(a) ans = 1 흠..디폴트가 '정수까지 반올림하라' 임을 알 수 있습니다.소수점 몇째짜리까지 반올림할지를 결정할 수 있는데 아래처럼 하면 됩니다.둘째자리까지 반올림해보겠습니다. >>a=1.12424>>round(a,2) ans = 1.1200 이정도만 알아도 충분하지만 조금 더 알아보죠.유효숫자의 개념으로 사용할 수도 있습니다. 유효숫자의 개수를 설정해주는 것이죠. >>b=21.345>>round(b,3,'significant') ans = 21.3000 이.. 2019. 7. 1.
[matlab 공부하자] 1. format short, format long (소수점 아래 4자리 vs 소수점 아래 15자리) 1. format short, format long (소수점 아래 4자리 vs 소수점 아래 15자리) >> a=1.23412531512362132136126 를 매트랩에 입력하면 a = 1.2341 이렇게 소수점 아래 넷째 자리까지만 표현된다. 디폴트 format 이 short이기 때문인데, 포멧을 long으로 바꿔보자. >> format long>>a a = 1.234125315123621 이렇게 소수점 아래 15째자리까지 표현된다. * matlab help에 있는 표입니다. 2019. 7. 1.
반응형