본문 바로가기
반응형

매트랩51

[매트랩] 여러 행렬을 하나의 변수 넣는 법 아래와 같이 세개의 행렬이 있다고 합시다. M1=[1 2 ; 3 4];M2=[10 20 ; 30 40];M3=[100 200 ; 300 400]; 혹은 100개의 행렬이 있다고 합시다.  이때 모든 변수를 각각 정의하는 것은 비효율적입니다. 행렬을 원소로 갖는 어떤 구조가 필요합니다.  두가지 방법이 있습니다.  1. 3차원 배열 사용아래와 같이 정의합니다. M_total(:,:,1)=M1;M_total(:,:,2)=M2;M_total(:,:,3)=M3; 아래와 같이 3차원 배열이 생성됩니다. 직관적으로 이해를 해 보자면, 각 행렬을 위로 쌓은 형태입니다.  >> M_totalM_total(:,:,1) = 1 2 3 4M_total(:,:,2) = 10 20 .. 2024. 10. 10.
[매트랩] 벡터 원소 오름차순 정렬하는 방법 벡터를 하나 생성합니다.  v = [3, 1, 4, 1, 5, 9, 2, 6, 5];sort 함수를 사용하여 오름차순으로 정렬합니다.  >> sort(v)ans = 1 1 2 3 4 5 5 6 9 2024. 5. 5.
[매트랩] 홀수 번째 원소, 또는 짝수 번째 원소 추리는 법 벡터를 하나 생성합니다.  vec = [1, 2, 3, 4, 5, 6, 7, 8, 9];1) 홀수 번째 원소 추출 odd_elements = vec(1:2:end);2) 짝수 번째 원소 추출 even_elements=vec(2:2:end) 2024. 5. 5.
[매트랩] 여러 행렬을 원소로 갖는 자료구조 (셀 배열) 두개의 행렬을 생성합니다.  a=[1,2 ; 3,4];b=[10,20 ; 30,40];배열을 정의하고 원소로 넣어줍니다.  carr={a,b};배열 원소에 접근하는 방법은 아래와 같습니다.  >> carr{1}ans = 1 2 3 4 2024. 5. 5.
[매트랩] if문 예시 matlab if문 예시입니다.  % 성적에 따른 학점score = 75;if score >= 90 grade = 'A';elseif score >= 80 grade = 'B';elseif score >= 70 grade = 'C';elseif score >= 60 grade = 'D';else grade = 'F';endfprintf('당신의 학점은 %s입니다.\n', grade); 2024. 5. 3.
[매트랩] 3차원 함수 그리는 방법 3차원 그래프를 그리는 예시는 아래와 같습니다. 함수 정의 부분에 원하는 함수를 넣으면 됩니다.  % x와 y 값 범위 설정x = linspace(-5, 5, 100); % -5부터 5까지 100개의 점으로 이루어진 벡터 생성y = linspace(-5, 5, 100);[X, Y] = meshgrid(x, y); % x와 y 벡터로 그리드 생성% 함수 정의Z = X .* Y;% 3D 그래프 플로팅figure;surf(X, Y, Z); % 3D 표면 그래프 그리기xlabel('X');ylabel('Y');zlabel('Z = XY');title('3D 그래프: Z = XY'); 2024. 4. 29.
[매트랩 기초] 여러 값을 반환하는 함수 만들기 여러 값을 반환하는 함수의 예시는 아래와 같습니다.  function [a,b,c]=myfun(input1,input2)a=input1+input2;b=input1*input2;c=input1/input2;end[p,q,r]=myfun(1,2); 2024. 4. 25.
[매트랩 기초] 인덱싱을 이용한 행렬(배열) 정의 인덱싱을 이용하여 아래와 같이 행렬을 정의할 수 있습니다.  >> a(1:5,1:5)=1a = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1만약 a라는 행렬이 이미 있다면 1:5,1:5 에 해당되는 부분이 수정될 것입니다. 2024. 4. 25.
[Matlab으로 파일&폴더 다루기] 3. 셀형 배열 원소 순서 정렬하기 (1 다음 2가 아니라 10이 나오는 문제 수정) 3. 셀형 배열 원소 순서 정렬하기 (1 다음 2가 아니라 10이 나오는 문제 수정) 지난시간까지 코딩한 내용은 아래와 같습니다. #파일 목록 불러오기path='C:\Users\Public\Sample'list=dir(path);name={list.name}name2 = name(3:end); 우리가 저장한 폴더제목 목록은 아래와 같습니다. >> name2name2 ={ [1,1] = 1.Apple [1,2] = 10.Johnson&Johnson [1,3] = 2.Microsoft [1,4] = 3.Amazon [1,5] = 4.Alphabet [1,6] = 5.Berkshire_Hathaway [1,7] = 6.Facebook [1,8] = 7.Alibaba [1,9] = 8.Tencent_Holdin.. 2020. 1. 14.
[Matlab으로 STL파일 다루기] 12. STL과 평면 사이의 교점을 구하는 함수 정의 12. STL과 평면 사이의 교점을 구하는 함수 정의 STL과 평면을 입력하면 교점을 구해주는 함수를 정의해봤습니다. 지난 강의에서 여러 단계로 나눠 수행한 내용들을 사용상 편의를 위해 하나의 함수로 묶은 것입니다. #stl과 평면의 교점을 구해줍니다. function interpoint = stlplintersec(mystl,PL) #한 face를 구성하는 점들을 같은 행에 저장 vertices_by_f=0;for i=1:size(mystl.faces)(1) for j=1:3 a=mystl.faces(i,j); vertices_by_f(i,(3*j-2):3*j)=mystl.vertices(a,:); end end #평면과 모서리 사이의 교점 구하기for i=1:size(mystl.faces)(1)p1=.. 2020. 1. 14.
[Matlab으로 파일&폴더 다루기] 1. 예제 파일&폴더 만들기 1. 예제 파일&폴더 만들기 매틀랩으로 폴더와 파일에 접근하고 자료를 추출하는 예제입니다. Sample이라는 폴더를 만들고, 이 폴더 안에 아래와 같이 10개의 폴더를 더 만들겠습니다. 각 폴더 안에는 폴더이름_Info.txt라는 메모장이 생성됩니다. 예를들어 01.Apple 이라는 폴더 안에 있는 메모장 파일은 01.Apple_Info.txt 가 됩니다. 메모장 파일에 들어갈 내용은 아래와 같습니다. 10개 회사의 정보가 아래와 같은 형식으로 입력되어 있습니다. 아래는 Apple의 예시입니다. Date of establishment : 1976Founders : Steve Jobs, Steve Wozniak, Ronard WayneHeadquarters : California, USWebsite : w.. 2020. 1. 13.
[Matlab으로 STL파일 다루기] 11. STL 불러와서 평면과 교점구하기 11. STL 불러와서 평면과 교점구하기 5강에서 만들었던 hammer_remesh.stl을 불러와서 평면으로 자른 교점을 구해봅시다. mystl=stlread('hammer_remesh.stl'); 10강에서 만든 코드를 그대로 적용해줍니다. #한 face를 구성하는 점들을 같은 행에 저장 vertices_by_f=0;for i=1:size(mystl.faces)(1) for j=1:3 a=mystl.faces(i,j); vertices_by_f(i,(3*j-2):3*j)=mystl.vertices(a,:); end end #평면의 방정식 2x+3y-z=0PL=[2 3 -1 0]; #평면과 모서리 사이의 교점 구하기for i=1:size(mystl.faces)(1)p1=vertices_by_f(i,1:.. 2020. 1. 8.
matlab에서 같은 요소 반복 생성하기 repelem() matlab에서 같은 요소 반복 생성하기 repelem() repelem(요소, 반복횟수) 아래는 예제입니다. >> repelem(1,4)ans = 1 1 1 1 >> repelem([1,2,3],3)ans = 1 1 1 2 2 2 3 3 3 [1,2,3]의 요소를 각각 2번, 3번, 4번씩 반복 >> repelem([1,2,3],[2,3,4])ans = 1 1 2 2 2 3 3 3 3 2020. 1. 7.
[Matlab으로 STL파일 다루기] 7. 간단한 STL 직접 만들어보기 이번에는 간단한 stl을 직접 만들어봅시다. 아래와 같은 정육면체를 만들어볼겁니다. 먼저 점들을 정의합시다. 아래와 같은 이름으로 정의할겁니다. 8개의 점을 정의한 코드는 매트랩 코드는 아래와 같습니다. a1=[1 0 0]; a2=[1 1 0]; a3=[0 1 0]; a4=[0 0 0]; a5=[1 0 1]; a6=[1 1 1]; a7=[0 1 1]; a8=[0 0 1]; 이 점들을 이용하여 vertices를 만듭시다. 위에서 부터 3개씩 연결하여 하나의 face를 만들 것입니다. 알아보기 쉽도록 아래와 같이 쓰겠습니다. mystl.vertices=[ %아랫면 a1;a2;a3; a1;a3;a4; %윗면 a5;a6;a7; a5;a7;a8 %앞면 a1;a2;a5; a5;a2;a6; %뒷면 a4;a3;a7; .. 2019. 11. 6.
[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.
반응형