반응형 Categories407 [matlab 공부하자] 16. 행렬의 원소의 개수를 반환하는 함수 (numel 함수) 16. 행렬의 원소의 개수를 반환하는 함수 (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. 1. [matlab 공부하자] 15. exist 함수 15. exist 함수 exist 함수는 어떤 변수, 함수, 폴더, class 가 존재하는지 여부를 판단해줍니다. 존재하지 않는 경우 0을 존재하는 경우 1을 결과로 줍니다. 예를들어봅시다. >> a=[1 2 3] a = 1 2 3 >> exist a ans = 1 다른 방식으로도 표현이 가능합니다. >> exist('a') ans = 1 '존재하지 않는다' 로도 이용할 수 있습니다. 아래와 같이요. >> ~exist('a') ans = 0 a가 존재하기 때문에 0이 반환되었습니다. 2019. 7. 1. [matlab 공부하자] 14. 관계 연산자, 논리 연산자 14. 관계 연산자, 논리 연산자 1. 관계 연산자 크다 >작다 =작거나 같다 2019. 7. 1. [matlab 공부하자] 13. for 사용법 13. for 사용법 for 문 사용 방법을 익혀봅시다. 간단하게 등차수열을 가지고 예제를 만들어 보았습니다. 첫항이 2이고 공차가 3인 등차수열에서 첫째항~다섯째항의 합을 구해봅시다. a=0;sum=0 for i=1:5a=2+3*(i-1);sum=sum+a;end 위에서 정의한 for문은 i에 1,2,3,4,5 를 순서대로 넣고나서 end로 빠져나옵니다. >> sumsum = 40 2019. 7. 1. [matlab 공부하자] 12. 수집합의 n승을 순차적으로 행렬에 추가하기 12. 수집합의 n승을 순차적으로 행렬에 추가하기 임의의 수집합을 정의합니다. >> x=[1 2 3 4 5 6 7 8 9 10]'x = 1 2 3 4 5 6 7 8 9 10 이 수집합의 각각의 수들의 n승을 a라는 행렬에 저장하는 코드입니다. a=x;degree=5; for i=2:degree a(:,end+1)=x.^i; end 결과는 아래와 같습니다. a = 1 1 1 1 1 2 4 8 16 32 3 9 27 81 243 4 16 64 256 1024 5 25 125 625 3125 6 36 216 1296 7776 7 49 343 2401 16807 8 64 512 4096 32768 9 81 729 6561 59049 10 100 1000 10000 100000 2019. 7. 1. [matlab 공부하자] 11. 한 행, 또는 한 열의 값을 통채로 바꾸기 11. 한 행, 또는 한 열의 값을 통채로 바꾸기 먼저 예제에 사용할 행렬을 정의합시다. >> A=[1 2 3; 4 5 6; 7 8 9]A = 1 2 3 4 5 6 7 8 9 1행의 값 전체를 3으로 바꿔보겠습니다. >> A(1,:)=3A = 3 3 3 4 5 6 7 8 9 이번에는 2열의 값 전체를 1로 바꿔보겠습니다. >> A(:,2)=1A = 3 1 3 4 1 6 7 1 9 쉽죠? 2019. 7. 1. [matlab 공부하자] 10. ones 함수 10. ones 함수 ones 함수는 모든 값이 1인 행렬을 만들어 주는 합수입니다. zeros 함수와 ones 함수는 자주 사용되니 기억해두면 좋습니다. 한번 사용해보죠. >> ones(5) ans = 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 원하는 크기의 행렬로도 만들 수 있겠죠? >> ones(3,2) ans = 1 1 1 1 1 1 2019. 7. 1. [matlab 공부하자] 9. 2가지의 input 데이터를 입력하면 자동으로 합격자와 불합격자를 서로 다른 행렬에 저장하는 코드 9. 2가지의 input 데이터를 입력하면 자동으로 합격자와 불합격자를 서로 다른 행렬에 저장하는 코드 logistic regression에서 사용되는 스킬?인데 간단한 예시로 배워봅시다. 학생들의 중간고사 점수, 기말고사 점수와 합격 여부를 알고 있다고 해봅시다. 아래와 같이 표현됩니다. 학생1 : 95,97,1 첫열은 중간고사점수, 둘째열은 기말고사 점수, 셋째열은 합격(1)입니다. 불합격은 (0)으로 표시합니다. 아래와 같은 데이터가 있다고 해봅시다. 95 97 194 93 177 76 065 84 0100 88 197 91 155 67 0 총 7학생의 데이터가 있는데, 이렇게 데이터를 입력하면 자동으로 합격자와 불합격자를 서로 다른 행렬에 저장하는 코드를 짜봅시다. 입력 데이터를 A라고 합시다. .. 2019. 7. 1. [matlab 공부하자] 8. zeros 함수 8. zeros 함수 zeros 함수는 모든 값이 0인 행렬을 만들어줍니다. 한번 사용해보죠 >> zeros(3) ans = 0 0 0 0 0 0 0 0 0 이번에는 2행3열짜리를 만들어봅시다. >> zeros(2,3) ans = 0 0 0 0 0 0 이번에는 A라는 행렬을 만들고 A와 동일한 크기의 zeros 행렬을 만들어봅시다. >> A=[1 5 3;2 4 2;1 5 6;3 5 2] A = 1 5 3 2 4 2 1 5 6 3 5 2 >> zeros(size(A)) ans = 0 0 0 0 0 0 0 0 0 0 0 0 2019. 7. 1. [matlab 공부하자] 7. 행과 열을 자유자재로 사용하기 7. 행과 열을 자유자재로 사용하기 X라는 행렬을 정의하고 몇가지 질문에 답하는 방식으로 강의를 진행해보도록 하겠습니다. >> x=[1 2 3;4 5 6;7 8 9;10 11 12] x = 1 2 3 4 5 6 7 8 9 10 11 12 Q1. 2행3열의 값만 알고 싶을 때는 어떻게해야 하나요?? >> x(2,3) ans = 6 Q2. 2행 2열,3열 값을 동시에 알고 싶어요 >> x(2,2:3) ans = 5 6 Q3. 2행 전체를 알고 싶어요. >> x(2,:) ans = 4 5 6 Q3. 3열 전체를 알고 싶어요 >> x(:,3) ans = 3 6 9 12 Q4. 1,2행 전체를 알고 싶어요 >> x([1 2],:) ans = 1 2 3 4 5 6 Q5. 1,3열 전체를 알고 싶어요. >> x(:,.. 2019. 7. 1. [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. <Two Link Manipulator - 2D> 8. Link1 회전 정의하고 움직이기 8. Link1 회전 정의하고 움직이기 이번에는 5,6,7번 강의에서 정의한 함수들을 사용 Link1에 모션을 주겠습니다. "3. Link 회전 정의하기"의 코드를 수정하였습니다. 비교하면서 보시면 이해가 쉬울겁니다. for 문을 추가하여 Link에 모션을 주었습니다. 수정한 코드는 빨간색으로, 이전과 동일한 코드는 파란색입니다. pause(0.2) 코드는 0.2초 정지한다는 뜻입니다. theta1=[0 5 10 15 20 25 30 35 40 45 50 55 60 55 50 45 40 35 30 35 40 45 50 55 60 65 70 65 60 55 50 45 40 35 30];size_theta=size(theta1);t_f=size_theta(1,2); for t=1:1:t_f Link1_a=[.. 2019. 7. 1. <Two Link Manipulator - 2D> 7. Rotation, Translation 행렬을 Point에 곱해주는 합수 정의 7. Rotation, Translation 행렬을 Point에 곱해주는 합수 정의 Point에 3x3 Rotation matrix나 Translation matrix를 곱하여 Point를 회전시키거나 이동시킬 때,(점의 특성상 Point 자체의 회전운동은 정의되지 않습니다. 이 맥락에서는 원점중심의 회전을 의미한다.)행렬 곱을 수행하기 위해 [x y]를 [x y 1]로 바꿔주어야 하고, 결과로 나온 [x' y' 1]에서 1을 제거하여 다시 Point로 만들어 주어야 합니다. (아래 그림 참고)이 과정을 매번 코드로 나타내는 것은 비효율적이기 때문에 함수로 정의해서 사용하려고 합니다. 코드는 아래와 같습니다. function y=TwoD_RTP(Matrix,Point); Point_1x3=[Point(1.. 2019. 7. 1. <Two Link Manipulator - 2D> 6. 3x3 Translation 함수 정의 6. 3x3 Translation 함수 정의 x,y축으로 움직일 거리를 을 입력하면Translation matrix를 만들어 주는 matlab 함수를 정의해 봅시다. unction y=TwoD_TMat(a,b); y=...[... 1 0 a;... 0 1 b;... 0 0 1;... ]; 함수는 m파일로 저장합니다.해당 m파일이 들어있는 폴더를 matlab 경로에 추가해줍니다. 함수를 한번 사용해보겠습니다. x축으로 3만큼, y축으로 2만큼 회전시키는 3x3 Translation matrix를 만들어 봅시다. a=3;b=2TMat1=TwoD_TMat(3,2) 코드를 입력한 결과입니다. 2019. 7. 1. <Two Link Manipulator - 2D> 5. 3x3 Rotation 함수 정의 5. 3x3 Rotation 함수 정의Rotation angle θ 을 입력하면Rotation matrix를 만들어 주는 matlab 함수를 정의해 봅시다. function y=TwoD_RMat(Theta); y=Rotation_Matrix =...[... cosd(Theta) -sind(Theta) 0;... sind(Theta) cosd(Theta) 0;... 0 0 1;... ]; 함수는 m파일로 저장합니다.해당 m파일이 들어있는 폴더를 matlab 경로에 추가해줍니다. 함수를 한번 사용해보겠습니다. 30도 회전시키는 3x3 Rotation matrix를 만들어 봅시다. Theta=30;RotMat1=TwoD_RMat(Theta) 코드를 입력한 결과입니다. 2019. 7. 1. <Two Link Manipulator - 2D> 4. 3x3 Transformation 행렬 설명 (2x2 회전행렬의 한계 극복) 4. 3x3 Transformation 행렬 설명 (2x2 회전행렬의 한계 극복) 이전 강의에서 회전행렬을 2x2로 정의했습니다. 링크가 하나이고 Origin에 연결되어 있는 경우에는 상관이 없지만Rotation과 함께 Translation이 발생하는 경우 굉장히 불편해 집니다. 예를들어 어떤 Point가 30도 회전하고 (2,3)만큼 움직이고 30도 회전하고 (5,4)만큼 움직이고 다시 30도 회전했다고 해 봅시다. 이를 수식으로 표현하면 아래와 같이 다중 괄호로 되어 있습니다. 다물체 동역학에서는 '역 과정'을 구해야 하는 경우가 있는데 수식이 다중 괄호로 되어 있으면 이를 전부 전개해서 풀어야 합니다. 이러한 한계를 극복하기 위해 등장한 것이 3x3 Transformation 행렬입니다. 굉장히 놀.. 2019. 7. 1. <Two Link Manipulator - 2D> 3. Link 1 회전 정의 (2x2 회전행렬 이용) 3. Link 1 회전 정의 (2x2 회전행렬 이용) Link 1의 회전 행렬을 정의합니다. 회전 행렬을 Link 1의 Point에 곱하여 나온 결과를 다시 Link 1 의 Point에 넣어줍니다. 아래 코드는 Link1 을 30도 회전시키는 코드입니다.cosd는 60분법 각도를 받아들입니다. d를 제거하면 라디안 각을 받습니다. theta1=30; Rotation_Matrix=[cosd(theta1) -sind(theta1);... sind(theta1) cosd(theta1)]; Link1_a=(Rotation_Matrix*Link1_a'); Link1_b=(Rotation_Matrix*Link1_b'); 회전 행렬이 추가된 전체 코드는 아래와 같습니다. Link1_a=[0 0];Link1_b=[3 .. 2019. 7. 1. <Two Link Manipulator - 2D> 2. Link 1 추가하기 2. Link 1 추가하기 지난 강의에서 만들었던 Global Coordinate System에 Link 1 을 추가해 보도록 하겠습니다. Link 1 의 길이는 3으로 설정하였습니다. Link1_a=[0 0];Link1_b=[0 3]; Global_Origin=[0 0]; Global_x=[1 0];Global_y=[0 1]; plot([Global_Origin(1) Global_x(1)],[Global_Origin(2) Global_x(2)],'-r');hold on plot([Global_Origin(1) Global_y(1)],[Global_Origin(2) Global_y(2)],'-g');hold on axis([-2 5 -2 5]);daspect([1,1,1]); plot 기능을 사용하여 링.. 2019. 7. 1. <Two Link Manipulator - 2D> 1. Global Coordinate System 그리기 1. Global Coordinate System 그리기 두개의 링크로 구성된 로봇 팔을 메트랩으로 표현해보고 회전 행렬을 이용해서 움직이는 예제입니다. 먼저 글로벌 좌표계를 그려보도록 하겠습니다. 매트랩 코드는 빨간색 글씨로 되어있습니다. 먼저 세 점을 정의합니다. Global_Origin=[0 0]; Global_x=[1 0];Global_y=[0 1]; plot 기능을 사용하여 좌표계를 그려줍니다. 원점과 (1,0)을 연결하여 x축을 만들고원점과 (0,1)을 연결하여 y축을 만듭니다. x축은 빨간색 선으로, y축은 녹색 선으로 설정합니다. '-r' 에서 - 는 실선을 의미하고 r은 red를 의미합니다. Global_Origin=[0 0]; Global_x=[1 0];Global_y=[0 1]; pl.. 2019. 7. 1. [UG NX 도면] 도면 치수 크기 변경 [UG NX 도면] 도면 치수 크기 변경 File -> Preference -> Drafting 으로 들어가서 아래 값을 설정합니다. 특정 치수에서 우클릭 후 setting으로 들어갑니다. Text -> Dimension Text 값을 설정합니다. 2019. 6. 26. [UG NX 도면] 도면 섹션 단면 등의 이름 변경 [UG NX 도면] 도면 섹션 단면 등의 이름 변경 단면 이름에서 우클릭하고 Setting으로 들어갑니다. Common -> View Label 값을 바꿔줍니다. 2019. 6. 26. [UG NX 도면] 도면 기본 글자크기 설정 [UG NX 도면] 도면 글자크기 설정 File -> Preference -> Drafting 으로 들어가서 아래 값을 설정합니다. 특정 글자에서 우클릭 후 setting으로 들어갑니다. Text -> Dimension Text 값을 설정합니다. 2019. 6. 26. [UG NX 도면] 불러온 VIEW의 테두리 없애는 법 [UG NX 도면] 불러온 VIEW의 테두리 없애는 법 File -> Preference -> Drafting으로 들어갑니다. 아래 텝을 찾고, Display를 해제합니다. 2019. 6. 26. [UG NX 어셈블리] 어셈블리에서 스케치 등 숨겨진거 보이는 법 [UG NX 어셈블리] 어셈블리에서 스케치 등 숨겨진거 보이는 법 원하는 모델선택 우클릭하고, Entire Part 클릭 2019. 6. 26. [UG NX 도면] 치수 arrow head 방향 바꾸는 법 [UG NX 도면] 치수 arrow head 방향 바꾸는 법 치수위에서 우클릭하고 setting으로 들어갑니다. 아래 그림에서 in/out 변경합니다. 2019. 6. 26. 이전 1 ··· 10 11 12 13 14 다음 반응형