블로그 이미지
최고깜찍이

카테고리

캬라멜팝콘 (20)
웹브라우져 (3)
동영상플레이어 (0)
내 주변기기 (1)
Toeic (0)
악마의음식 (0)
Wishlist (0)
유용한 프로그램 (2)
영화관련 (1)
검색 팁 (2)
Iphone4 / Ipod touch2G (5)
Total22,903
Today8
Yesterday19

달력

« » 2014.09
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

공지사항

태그목록

MATLAB 명령어

분류없음 / 2011/01/18 16:48

많이 쓰지 않아 자꾸 잊어버리는 매트랩

*** 직접연산 아닌 여러가지 기능들

    %m 파일 처음에 넣으며깨끗하게 하는
    clear all;  %clear 변수명 하면 그 변수 지워짐
    close all; clc;

    *clear - 선언한 변수들 지우기
    *close - 닫기
    *clc - 명령창 깨끗하게

    whos %지금 있는 변수 들 보기



***행렬(matrix) 선언

    a=[0 2; 4 3];   ->2*2 행렬    

    a=[0 2; ...
         4 3]          ->...을 사용하여 이렇게도 가능

    b=[a [0;1]; [0 0] 1];    ->이런식으로 가능.
    *결과 -> 0 2 0
                 4 3 1
                 0 0 1

    x=0:-2:-5  %0, -2, -4 하는 식으로 만들어짐.  범위와 증분
    x=1:0  %빈 벡터 만들어짐
    linspace(0,pi,10)  %0부터 pi까지 균등한 간격의 점을 10개 만들어 낸다



***행렬 원소 접근하기

    a(1,1)  %행과 열로 접근



***행렬 관련 연산

    역행렬 - inv(a);
    랜덤행렬 - rand(m);    rand(m,n)  %0과 1 사이 값, m 크기의 정방행렬과 m*n 크기의 행렬, 
    determenent - det(a);
    rank - rank(a);
    전치, transpose y=[1 3 2 0]`
    벡터에서 특정 원소 제거하기  a=[1,2,3,4,5,6,7], 여기서 a([1 7 2]) = [] 라고 하면 1,7,2번째 원소들 제거됨



***매트랩 함수, function
    
    <기본 모양>
    function [outarg1, outarg2, ... ] = name( inarg1, inarg2, ...)
    %comments to be displayed with help
    ...
    outarg1 = ...;
    outarg2 = ...;
    ...

    <예제>
    function d = dice(n)
    d = floor( 6 * rand(1,n) + 1);

    <다른 예제, DH 파라미터 구하는 함수>
    function T = makeTransMat(alpha, a, theta, d)
    Rx=[1 0 0 0; ...
        0 cos(alpha) -sin(alpha) 0; ...
        0 sin(alpha) cos(alpha) 0; ...
        0 0 0 1];
    Dx=[1 0 0 a; ...
        0 1 0 0; ...
        0 0 1 0; ...
        0 0 0 1];
    Rz=[cos(theta) -sin(theta) 0 0; ...
        sin(theta) cos(theta) 0 0; ...
        0 0 1 0; ...
        0 0 0 1];
    Dz=[1 0 0 0; ...
        0 1 0 0; ...
        0 0 1 d; ...
        0 0 0 1];

    T=Rx*Dx*Rz*Dz;



*** 박스 그리기
    
    abox = [0 2 2 0 0; 0 0 1 1 0; 1 1 1 1 1]
    plot(abox(1,:),abox(2,:), 'b-');



*** 그리기

    plot ( [0 4], [1 3] )  %0,1과 4,3 사이에 선 긋기   help plot으로 많은 정보 볼 수 있음

    %예제
    plot([1.068 1.274 1.517 1.748 2.030],[550 450 203 132 75],'b')
    hold on
    plot([1.064 1.272 1.508 1.769 1.950],[3072 2200 1440 1120 900],'g')
    plot([1.080 1.290 1.482 1.736 2.000],[2940 2700 1620 1107 936],'r')
    plot([1.013 1.236 1.516 1.763 2.004],[2442 1400 792 432 320],'c')
    plot([1.022 1.263 1.515 1.771 2.032],[1963 1134 804 616 380],'n')

    gtext('X marks the spot')  %그래프에서 마우스 찍는 곳에 텍스트 그리기
    text(x,y, 'test')  %그래프에서 x,y좌표에 문자열 text 쓴다

    grid  %현재 그래프에서 격자선을 추가하거나 삭제
    
    title('text')
    xlabel('horizontal')
    ylabel('vertical')

    axis([xmin, max, ymin, ymax])  %축의 한계 설정
    axis auto  %축한계 다시 자동으로 바꿀 때
    axis equal  %x,y축 스케일 같게, 원 같은거 그릴때 편함

    figure(0)  % 0, 1, 2 등을 사용하여 작업할 그래프 선택
    hold on  %이전것들 덮어서 계속 작업




***polar coordinate로 그리기

    t = [0:22.5:360-22.5,0]/180*pi;      %radian으로 해야함
    r = [10, 14, 30, 33, 55, 11, 22, 33, 13, 42, 32, 12, 23, 13, 5, 25, 10];
    polar(t,r)
    %polar(t,r,'-r')  %옵션, 점선에 붉은색으로



*** 이미지 관련
    
    im = imread('ZEON.jpg');
    imshow(im)
    im2 = rgb2gray(im);
    im3 = double(im2)/255;
    imagesc(im3)
    max(max(X))  %이미지 내에서 최대 값 찾을 때  ->  max(im(:)) 이러케도 됨
    min(min(X))   %이미지 내에서 최소 값 찾을 때  ->  min(im(:)) 이러케도됨

    


***Matlab 종료시키기
    프롬프트에서 quit 또는 exit




***멕시코 모자(Mexican hat) 그리기
    [x y] = meshgrid(-8:0.5:8);  %x,y 평면(z=0인)에 0.5 간격으로 -8~8까지 점들 생성
    r=sqrt(x.^2 + y.^2) + eps;
    z=sin(r)./r;
    mesh(z);  %안쪽이 빈 mesh, 그물형태로 그림
    surf(z);  %격자 안쪽을 색을 칠하여 그림
    meshc(z);  %아래쪽에 등고선처럼 선 그려줌
    surfc(z);  %마찬가지로 아래쪽에 등고선처럼 선 그려줌
    surf(z), shading flat  %칠한 색만 남기고 격자 그물무뉘는 없애줌



***간단한 사운드, 음악, 소리 불러오기
    load handel  %chrip, gong, laughter, splat, train 등 가능.
    sound(y,Fs)



***지수 숫자 표시하기
1.234e9  %1.234 * 10의 9승
2.3e-2  %2.3*10의 -2승




***결과, 문자 등 출력하기, printf 처럼
disp (variable)  %출력하고자 하는 변수 넣기
disp ('hello world')  %hello world 출력하기(문자열)
disp (['num of point :', numofpts]  %문자와 변수 이런식으로 같이

format short e  %(부동소수점 형태로 출력)
format long e  %(15자리 유효숫자로 출력 (지수))
format long  %(15개의 숫자로 고정 소수점 형태)
format long g  %출력값을 예상 못하겠다면.  g == general
format bank
format compact/loose  %보다 간결한 표시 compact, 해제하려면 loose
format hex  %16진수 표시
format rat  %분수 값 표시용
format +  %양수와 음수, 0에 따라 +,-표시와 빈칸이 표시됨
format  %다시 기본값으로 돌아가고플떄




***for문
%제곱근의 연산
a=2;
x=a/2;
for i=1:6
    x=(x+a/x)/2;
    disp(x)
end

disp('Matlab' 's value: ')
disp(sqrt(2))

***while문
while condition
    statements
end






*** 수행시간 측정
t0 = clock;
%process
etime(clock, t0)

tic
%process
toc





*** if-else
if x<0 disp('neg'), else disp('non-neg'), end
if x<0 disp('neg'), elseif x>0 disp('non-neg'), end



***switch
d=3;
switch d
case 1
    disp('1');
case 2
    disp('2');
otherwise
    disp('other');



*** 복소수 전치
a=[1+i, 2+2i; 3+3i, 4+4i]

a` = 1.0000-1.0000i  3.0000-3.0000i
      2.0000-2.0000i  4.0000-4.0000i

a.` = 1.0000+1.0000i  3.0000+3.0000i
       2.0000+2.0000i  4.0000+4.0000i




***데이터 저장과 불러오기
% %e, %f, %g 있음, 유효소수점 별로 신경쓰기 싫다면 g가
a=1;
b=0.3;
fprintf('print test : %f  %g\n',a,b);
%fprintf('myfile', '%g', x)

%fopen, fread, fwrite, fseek 등
A=[1 2 3; 4 5 6];
save myData.txt A -ascii  %-ascii 대신 -tabs 옵션 가능
load myData.txt
A=load('myData.txt')



***변수에 데이터 입력 받기
a = input('enter a value:');



***OS 명령어 실행하기
%명령어 앞에 ! 를 붙여 OS 명령어를 바로 실행시킬 수 있음
!dir
!time



***각종 함수들

%절대값
abs(x)
%올림
ceil(x)
%0을 향하여 가장 가까운 정수로 반올림
fix(x)
%내림
floor(x)
%x에 가장 가까운 정수로 반올림
round(x)
%시간과 날짜
t=clock
fprintf(' %02.0f:%02.0f:%02.0f\n', t(4), t(5), t(6) );
%벡터의 누적합
comsum(1:4)
%dd-mmm-yyyy 형태의 날짜 표시
date
%벡터 x의 원소의 개수
length(x)
%벡터x에서 가장 큰 원소, 작은 원소
max(x)
min(x)
%벡터x 원소들의 평균값
mean(x)
%2^x
pow2(x)
%벡터 x원소들의 곱
prod(x)
%0~1 사이의 랜덤한 난수
rand
%사용자 컴퓨터에서 가장 큰 양의 실수, 가장 작은 양의 실수
realmax
realmin
%x를 y로 나누었을 때의 몫, 나머지값
fix(x/y)
rem(x,y)
%x의 부호, -1,0,1이 나옴
sign(x)
%행렬 a의 행과 열의 수
size(a)
%오름차순으로 벡터x의 원소를 정렬
sort(x)
%n차 파스칼 행렬 생성
pascal(n)
%마정방 사각형 생성
magic(10) 
%행렬 관련
A'  %A의 전치행렬(transpose)

det  %행렬식(determinant)
eig  %고유값
expm  %행렬 지수,  e^A
inv  %역행렬
svd  %특이치 분해
diag  %대각행렬을 생성하거나 추출
fliplr  %왼쪽에서 오른쪽으로 열을 뒤집음
flipup  %위에서 아래로 행을 뒤집음
rot90  %반시계방향으로 회전시킨다
tril  %삼각형 형태의 아래 부분을 뽑아낸다
triup  %삼각형 형태의 윗부분 뽑아낸다




*** 0으로 나눠지는 것 피하기, 무한대로 가는 것 피하기
x=x+(x==0)*eps;   %x=x+(~x)*eps;
y=sin(x)./x;  %x가 0일 때 문제 생김

y=tan(x);
y=y.*(abs(y) < 1e10);



*** 연산자 우선순위

1    ()
2    ^ .^ ' .'(pure transpose
3    +(unary plus) -(unary minus) ~(NOT)
4    * / \ .* ./ .\
5    +(addition) -(subtraction)
6    :
7    > < >= <= == ~=
8    &(AND)
9    |(OR)



***논리 벡터, 함수
%벡터에서 특정 원소 모두 제거하기
a=a(a>0)  %0보다 큰 원소만 남기고 모두 제거한다
%만약 x의 어떤 원소라도 0이 아니면(참이면) 스칼라 값 1(참)을 내보냄
any(x) 
%만약 x의 모든 원소가 0이 아니면 스칼라 값 1(참)을 내보낸다
all(x) 
%a가 작업공간 상의 변수 명이라면 1을 내보냄
exist('a') 
%벡터 x의 0이 아닌 원소의 첨자를 포함하는 벡터로 돌려줌
find(x) 
a=a(find(a))  %a에서 0인 원소를 모두 제거
find(x>=max(x))  %가장 큰 원소가 하나 이상일 때 그 첨자를 찾는다
%x가 빈 배열(0x0 크기)이면 1, 아니면 0
isempty(x)
%x의 원소가 +Inf, -Inf가 있으면 1, 아니면 0
isinf(x)
%x의 원소 중에서 NaN이 있으면 1, 아니면 0
isnan(x)
x(isnan(x))=[]  %x에서 NaN 제거하기



*** menu, GUI
k=0;

while k~=3
    k=menu('click on your option', 'do this', 'do that', 'quit');
    if k==1
        disp('do this...press any key')
        pause
    elseif k==2
        disp('do that... press any key')
        pause
    end
end;



*** 보간법 (interpolation)
%interp1은 2차원 데이터의 1차원 보간을, interp2는 3차원 데이터의 2차원 보간을 수행
interp1(x,y,x_new)
interp1(x,y,x_new,'linear')
interp1(x,y,x_new,'spline')

polyfit(x,y,n)


출처: http://kimhj8574.egloos.com/4818260

Posted by 최고깜찍이
«이전 1 ... 2 3 4 5 6 7 8 9 10 ... 20 다음»

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

티스토리 툴바