matlab 에서 imread 명령을 사용하여
color image 를 불러 올 수 있으며
그 결과는 R,G,B 각각에 대한 0~255 의 값을 가지는 intensity 로 표현된다.


ex)

clear all; clc; close all;
color_image=imread('onion.png'); % color image 를 불러온다.
                                 % 아래와 같이 3차원 행렬로 저장된다
                                 % (:,:,1)  : Red
                                 % (:,:,2)  : Green
                                 % (:,:,3)  : Blue

r=color_image; r(:,:,[2 3])=0;   % Red   요소만 남기고 모두 0으로 만든다.
g=color_image; g(:,:,[1 3])=0;   % Green 요소만 남기고 모두 0으로 만든다.
b=color_image; b(:,:,[1 2])=0;   % Blue  요소만 남기고 모두 0으로 만든다.

subplot(2,3,2); imshow(color_image);
subplot(2,3,4); imshow(r);
subplot(2,3,5); imshow(g);
subplot(2,3,6); imshow(b);

아래 그림으로 간단히 설명 된다.

'[old 정리중] study > matlab' 카테고리의 다른 글

MATLAB으로 Microsoft Kinect 사용하기  (0) 2013.08.17
복소수의 변환 abs, angle, exp()  (0) 2011.07.19
dot ( dot(A,B) )  (0) 2011.06.21
sum ( sum(X) , sum(X,DIM) )  (0) 2011.06.21
matlab 코드 수행시간 측정  (1) 2011.05.19
만약 A 와 B 가  같은 크기의 (n by n) 정방 행렬 이라면,

A의 n번째 열과 B의 n번째 열의 dot product 가 이루어져
결과는 (1 by n) 의 vector 가 만들어진다.

ex) A=[a  b               B=[e  f
           c  d];                 g  h];

일 때,

dot(A,B) 의 결과는  [ e*conj(a) + g*conj(c), f*conj(b) + h*conj(d)]


즉, [   [a  c][e    ,   [b  d][f       ]  의 결과가 된다.
                   g]                 h]

만약, X 가 (m by n) 행렬 일 때,

S=sum(X)  -> 행렬 X 의 모든 요소들의 합.

S=sum(X,1) -> 1차원 방향으로 모든 요소들의 합.
                      즉, 각 열(column) 의 요소들이 더해져 (1 by n) vector 가 된다.

S=sum(X,2) -> 2차원 방향으로 모든 요소들의 합.
                      즉, 각 행(row) 의 요소들이 더해져 (m by 1) vector 가 된다.

S=sum(X,3) -> 3차원 방향으로 모든 요소들의 합이 될 것이다....


ex)
 X = [0 1 2
        3 4 5]
 일 때,
 sum(X,1)  의 결과는 [3 5 7]
 sum(X,2)  의 결과는 [3
                                12]
기어를 그리는 여러방법중 추가 프로그램을 사용하는 방법이 있다.
기어 위자드 라는 툴을 사용하여 기어를 쉽게 생성해서 솔리드웍에서 가져다 사용 할 수 있다.
하지만 이를 그대로 시스템에 어셈블하여 시뮬레이션 용도로 쓰기는 쉽지 않다.

출처: http://cyg.kr/2
위 출처로가면 기어에 대해 이것저것 세부 설명들을 많이 포스팅 해 놓았다 참조하자..



AutoCAD에서 모듈 2.0, 잇수 19개의 기어 치형을 그려 보겠습니다.

01)
피치원을 그립니다. 피치원의 지름은 모듈에 잇수를 곱하면 됩니다.
 - 전위기어를 그리고 싶으면 피치원을 전위거리(=전위계수X모듈) 만큼 간격 띄우기를 하여 전위원을 하나 더 그립니다.

02)
피치원의 중심에서 시작하는 수평선을 그립니다.

03)
수직선을 그립니다.

04)
그려진 수직선을 수평선과 피치원이 만나는 지점으로 이동을 합니다. 이 수직선이 접촉선입니다.
- 전위기어는 접촉선을 수평선과 전위원이 만나는 지점으로 이동합니다.

05)
수평선을 간격 띄우기를 하여 랙표면선을 그립니다. 간격거리는 "(* 0.25 2 pi)"를 입력합니다. (괄호는 AutoCAD에서 계산을 하라는 뜻이며 0.25는 치형 1개의 1/4을 뜻하며 2는 모듈 값이며 pi는 π를 뜻합니다.)

06)
랙표면선과 접촉선이 만나는 지점을 중심으로 랙표면선을 압력각(20˚) 만큼 회전을 합니다.(일반적인 기어는 압력각이 20˚입니다.)

07)
접촉선도 피치원과 만나는 지점을 중심으로 압력각(20˚) 만큼 회전을 합니다.
 - 전위기어는 접촉선을 다시 피치원과 수평선이 만나는 점으로 이동을 해서 압력각(20˚) 만큼 회전을 합니다. (즉, 위 그림과 똑 같습니다.)

08)
피치원의 중심에서 접촉선에 수직인 기초원을 그립니다.

잠깐)
선에 수직인 원을 그릴려면 원 그리기를 선택하고 피치원의 중심을 찍고 키보드의 "Shift"키를 누른 상태에서 마우스 우측 버턴을 누르면 아래와 같은 메뉴가 나옵니다. (기초원은 인벌류트 곡선을 그리는 기초원이며 피치원 지름에 압력각의 코사인(cosα)값을 곱하면 기초원의 지름이 됩니다.)

이 메뉴에서 수직점을 선택하고 접촉선을 클릭하면 접촉선에 수직인 원이 그려집니다.

09)
기초원, 수평선, 접촉선을 선택하여 위와 같이 자르기(trim)를 하여 기초호를 만듭니다.

10)
기초호와 접촉선이 만나는 점(기초호의 위쪽 끝점)을 중심으로 하여 랙표면선과 접촉선이 만나는 지점까지를 반지름으로 하는 큰 치형원을 그립니다.
 
11)
기초호의 중간점을 중심으로 하여 큰 치형원에 수직인 작은 치형원을 그립니다.

12)
이제는 필요 없는 랙표면선과 접촉선을 지웁니다.(헷갈릴 것 같아서 지우라는 것이지 꼭 지울 이유는 없습니다.)

13)
큰 치형원, 작은 치형원, 수평선을 선택하여 자르기(trim)를 하여 치형호를 만듭니다. (피치원의 바깥쪽은 작은 치형원을 자르고 피치원 안쪽은 큰 치형원을 잘라 위의 그림과 같이 만듭니다.)

14)
치형호들을 수평선에 대해 대칭을 하여 위와 같이 그립니다.

15)
이끝원을 그립니다. (표준기어의 이끝원은 피치원에서 모듈만큼 바깥쪽으로 간격띄우기를 하면 됩니다.)
 - 전위기어는 전위원에서 간격 띄우기를 하면 됩니다.

16)
큰 치형호와 이끝원을 선택하여 자르기를 해서 위와 같이 치형을 만듭니다.

17)
이뿌리원을 그립니다. (표준기어의 이끝원은 피치원에서 모듈에 1.25를 곱한 값 만큼 안쪽으로 간격띄우기를 하면 됩니다.)
 - 전위기어는 전위원에서 간격 띄우기를 하면 됩니다.

18)
이뿌리원과 작은 치형호를 선택해서 자르기를 하여 위와 같이 치형을 만듭니다.

19)
적당한 값으로 모깎기를 하여 위와 같이 만듭니다. (모듈 2.0, 잇수 19개 에서 모깎기 반지름을 1.0으로 했습니다.)
기어가 서로 맞물릴 때 치형의 간섭을 피하기 위한 트로코이드 곡선 부분입니다. 간섭이 없도록 적당이 그리면 됩니다.

20)
이 뿌리원을 지워 치형곡선만 남깁니다.

21)
치형 곡선을 잇수만큼 원형 배열을 합니다.

22)
치형과 치형을 연결하도록 이뿌리호를 그립니다.

23)
그려진 이뿌리호를 잇수 만큼 원형 배열을 합니다.

24)
치형이 모두 완성 되었습니다.

정밀도)
위의 기어(모듈 2mm, 잇수 19개)에서 치형 끝부분의 오차는 0.075mm입니다.
위와 같은 방법으로 잇수가 2배인 기어(모듈 2mm, 잇수 38개)를 그리면 오차가 0.021mm입니다.
잇수가 많으면 오차는 급격히 줄어듭니다.
세가지 방법이 있다.

방법1. tic/toc 사용
측정하려는 구문의 위아래에 tic/toc 을 각각 삽입힌다.
ex)
 clear all; clc; close all;
 내용1....
 내용2....
 tic
 내용3...
 toc
방법2. clock 과 etime
측정하려는 구문의 시작에 clock 변수를 지정
                구문의 종료에 etime 을 사용
ex)
clear all; clc; close all;
내용1...
내용2...
x0=clock;
내용3...
etime(clock,x0)
방법3. cputime 을 이용해서
          구문의 시작과 종료 지점 각각에 대한 cputime 을 측정하고
          차이를 계산한다.

'[old 정리중] study > matlab' 카테고리의 다른 글

dot ( dot(A,B) )  (0) 2011.06.21
sum ( sum(X) , sum(X,DIM) )  (0) 2011.06.21
log 사용시 주의 - log / log10  (0) 2011.04.19
두개의 transfer fucntion 합치기 - series  (0) 2011.04.19
transfer function 표현 - tf / tfdata  (0) 2011.04.19
solidworks 에서 swb 파일을 여는 방법 첨부파일 참조

한국미스미 등에서 부품 cad 정보를 solidworks 로 받으면 swb 파일로 제공된다.

베어링에 대한 예시 파일을 첨부한다.



일반적으로 log 라 하면 밑이 10인 log10 으로 사용되지만
Matlab 에서는 다름을 주의!

log(X)     ~ the natural logarithm of the elements of X    (밑이 e 인 자연로그)
log10(X)  ~ the base 10 logarithm of the elements of X  (밑이 10 인 상용로그)

ex) log(2)       -> ans = 0.6931
      log10(2)    -> ans = 0.3010

'[old 정리중] study > matlab' 카테고리의 다른 글

dot ( dot(A,B) )  (0) 2011.06.21
sum ( sum(X) , sum(X,DIM) )  (0) 2011.06.21
matlab 코드 수행시간 측정  (1) 2011.05.19
두개의 transfer fucntion 합치기 - series  (0) 2011.04.19
transfer function 표현 - tf / tfdata  (0) 2011.04.19

 SYS = SYS1*SYS2 일때
 SYS 의 표현을 쉽게 계산한다.








ex) sys1 과 sys2 를 알 때, sys = sys1*sys2 라고 하자. sys=?

          sys1= 5 s^2
                            1
          sys2=  -------------
                     s^2 + 2 s + 1
          로 주어져 있을때,

          (사용)---------------------
          sys = series(sys1,sys2)

          (결과)---------------------
                         5 s^2
          sys =  -------------
                     s^2 + 2 s + 1

'[old 정리중] study > matlab' 카테고리의 다른 글

dot ( dot(A,B) )  (0) 2011.06.21
sum ( sum(X) , sum(X,DIM) )  (0) 2011.06.21
matlab 코드 수행시간 측정  (1) 2011.05.19
log 사용시 주의 - log / log10  (0) 2011.04.19
transfer function 표현 - tf / tfdata  (0) 2011.04.19

+ Recent posts