'공부이야기/MATLAB 깔짝'에 해당 되는 글 20건

  1. 2016.04.14 시리얼 통신으로 센서로부터 들어오는 데이터를 실시간으로 plot하기 1
  2. 2015.07.18 matlab command line에서 그림 저장하기
  3. 2012.10.18 [MATLAB] windows 7 64-bit 환경에서 embedded matlab 사용시 에러 3
  4. 2012.07.01 [MATLAB] plot의 글자크기(font size) 및 모양 변경하기 ylabel, xlabel, legend
  5. 2012.04.20 MATLAP GUI에서 Timer를 동작시켜 현재 날짜와 시각을 업데이트 하는 간단한 예제
  6. 2012.02.26 MATLAB Coder C Code Generation for a MATLAB Kalman Filtering Algorithm
  7. 2011.09.03 MATLAB 도움말에서 글씨가 이상하게 나오는 경우
  8. 2011.03.20 m파일 실행시 matlab의 editor로 바로 연결시키기 2
  9. 2010.03.10 MATLAB에서 그래프의 눈금 조절하기
  10. 2010.03.09 [MATLAB] Comparison of Euler's Method with Tustin's Method
  11. 2010.03.09 [MATLAB] Euler's Method second order case
  12. 2010.03.08 [MATLAB] Euler's Method
  13. 2010.01.17 [MATLAB] rlocus를 이용해 root locus 그리기 2
  14. 2010.01.17 [MATLAB] dsolve를 이용해 상미분방정식 풀기
  15. 2010.01.17 [MATLAB] laplace를 이용해 라플라스 변환 구하기
  16. 2010.01.17 [MATLAB] slu.m을 이용하여 주어진 matrix를 LU분해하기
  17. 2009.10.19 [MATLAB] mesh와 meshgrid를 이용한 3차원 그래프 그리기
  18. 2009.10.19 [MATLAB] 전달함수로 부터 control canonical form 얻기
  19. 2009.10.19 [MATLAB] symbolic 객체를 이용한 적분
  20. 2009.10.19 [MATLAB] matlab에서 수치적분 하기 quad
2016. 4. 14. 14:15

시리얼 통신으로 센서로부터 들어오는 데이터를 실시간으로 plot하기

시리얼 통신으로 센서로부터 컴퓨터로 실시간으로 들어오는 데이터를 매트랩에서 실시간으로 plot하기위해 메카솔루션 오픈랩이라는 블로그에서 퍼온 소스코드를 조금 수정했다. 실시간 plot을 멈추고 포트를 닫는 과정이 조금 제대로 구현이 안되었지만 대충 테스트 하기에는 문제 없는듯...

센서쪽에서는 문자열로 데이터를 보내줘야함.




clear all; clc;

delete(instrfindall) % 현재 연결되어 있는 시리얼포트들을 다 지웁니다.

s2 = serial('COM6', 'BaudRate', 38400); % 아두이노에서 연결했던 시리얼포트 번호를 입력합니다. 제꺼는 29번이네요.

fopen(s2); % 포트를 엽니다.

time = 0;


datalen = 100;

data = zeros(1,datalen);

% for i = 1:datalen;

while (1)

    time = time + 1;

    a = str2num(fscanf(s2));

    

    data(1:end-1) = data(2:end);

    data(end) = a;

    idx = time-datalen+1:1:time;

    

%     plot(idx, data, '*');

    plot(idx, data, 'linewidth', 2);

    axis([min(idx) max(idx) 0 2000]);

    drawnow; % Plot을 계속 업데이트해줍니다. 마치 리얼타임처럼...

end

%%

fclose(s2) % 포트를 닫고

delete(instrfindall) % 모든 시리얼포트 정보를 지웁니다. 다시 아두이노 프로그램을 열 때 에러를 방지하기 위해서...


2015. 7. 18. 11:24

matlab command line에서 그림 저장하기

saveas 함수를 사용

http://kr.mathworks.com/help/matlab/ref/saveas.html


2012. 10. 18. 17:42

[MATLAB] windows 7 64-bit 환경에서 embedded matlab 사용시 에러

Unable to locate 'mexopts.bat', and therefore cannot determine which compiler to use for simulation builds. Use 'mex -setup' to select a supported compiler


위와 같은 에러가 발생 시... Visual Studio 2010을 설치 후 SDK 7.1을 설치하고 매트랩 커맨드 창에서 'mex -setup'을 친 후 컴파일러 선택 화면에서 Visual Studio 2010을 골라준다.


관련글: http://www.mathworks.co.kr/support/compilers/R2010b/win64.html

2012. 7. 1. 10:45

[MATLAB] plot의 글자크기(font size) 및 모양 변경하기 ylabel, xlabel, legend

clear all; clc

t = 0:0.01:2*pi;

alpha = sin(t);


plot(t,alpha);


xlabel(['\fontname{times new roman}' '\itt\rm'], 'fontsize', 30)


h_ylabel = ylabel('\it\alpha\rm(\itt\rm)');

set(h_ylabel, 'fontname', 'times new roman', 'fontsize', 30);


h_legend = legend('\it\alpha=\rmsin(\itt\rm)');

set(h_legend, 'fontname', 'times new roman', 'fontsize', 30)





2012. 4. 20. 15:26

MATLAP GUI에서 Timer를 동작시켜 현재 날짜와 시각을 업데이트 하는 간단한 예제

2012. 2. 26. 14:19

MATLAB Coder C Code Generation for a MATLAB Kalman Filtering Algorithm

2011. 9. 3. 22:42

MATLAB 도움말에서 글씨가 이상하게 나오는 경우

File -> Preferences -> 왼쪽 박스에서 Fonts -> Custom -> Desktop tools에서 HTML Proportional Text 선택 -> Font to use에서 Desktop code 선택 후 Apply
2011. 3. 20. 01:57

m파일 실행시 matlab의 editor로 바로 연결시키기

MATLAB을 새로 설치하고나서 m-file의 연결프로그램이 MATLAB의 editor로 되어있지 않아 이를 해결하는 방법을 찾아보던 중 mathworks 홈피에서 찾은 내용



This link is designed to execute MATLAB commands.

You have clicked on a link originally designed to execute MATLAB commands. However, these links do not work in a Web browser. You can run the command by entering the following in the MATLAB command window:

 commandwindow; cwd=pwd; cd([matlabroot '\toolbox\matlab\winfun\private']); fileassoc('add','.m') ;cd(cwd); disp('Changed Windows file association. M-files are now associated with MATLAB.')



 

http://www.mathworks.com/help/techdoc/matlab_env/rmvd_matlablink__14.html

 


윈도우 7의 경우 매트랩을 관리자 권한으로 실행 후 입력해 주어야 한다.

2010. 3. 10. 13:17

MATLAB에서 그래프의 눈금 조절하기

수학문제 푸는 동네 단무깡님 글 참조


clear all;
t = 0:0.001:1;
y = sin(2*pi*t);
plot(t,y); grid on;

h = gca; % 그래프의 x축 핸들을 얻음
set(h,'xtick',0:.25:1); % 얻은 핸들을 이용해 xtick값을 설정

사용자 삽입 이미지

설정 전


사용자 삽입 이미지
설정 후
2010. 3. 9. 21:22

[MATLAB] Comparison of Euler's Method with Tustin's Method

clear all; clf
T = 0.5; End = 3;
k = 0:T:End;
t = 0:0.01:End;
y = zeros(1,length(k));
ytz = y;
for n = 1:length(k)-1
    y(n+1) = (1-T)*y(n) + T*1;
    ytz(n+1) = ( (2-T)*ytz(n) + 2*T )/(T+2);
end
yc = 1 - exp(-t);
plot(t,yc); hold on;
plot(k,y,'ro');
plot(k,ytz,'go');
legend('Continuous','Euler`s Method','Tustin`s Method','location','southeast');
title('Comparison of Euler`s Method with Tustin`s Method');

사용자 삽입 이미지
2010. 3. 9. 14:19

[MATLAB] Euler's Method second order case

\begin{align*} y'' + 2y' + y = \sin (t),\quad y(0) = 0,\quad y'(0) = 0 \end{align*}


clear all;
T = 0.2;
n = 0:T:8;
y = zeros(1,length(n));

for k = 1:length(y)-2
    y(k+2) = (2-2*T)*y(k+1) + (2*T-1-T^2)*y(k) + T^2*sin(k*T);
end

num = 1;
den = conv([1 2 1],[1 0 1]);
impulse(num,den); hold on;
axis([0 8 -1 1]); grid on;
plot(n,y,'o')

사용자 삽입 이미지사용자 삽입 이미지
2010. 3. 8. 22:31

[MATLAB] Euler's Method

\begin{align*} H(s) = \frac{1}{s+1},\quad y(0) = 0,\quad u(t) = 1 \end{align*} 인 경우 Euler's Method를 이용한 y의 근사화
\begin{align*} y[n+1] = (1-T)y[n] + Tu[n] \end{align*}

clear all; clf
T = 0.3; End = 3;
k = 0:T:End;
t = 0:0.01:End;
y = zeros(1,length(k));
for n = 1:length(k)-1
    y(n+1) = (1-T)*y(n) + T*1;
end
yc = 1 - exp(-t);
subplot(211)
plot(k,y,'o'); hold on;
plot(t,yc);

사용자 삽입 이미지
2010. 1. 17. 10:47

[MATLAB] rlocus를 이용해 root locus 그리기

\begin{align*} G(s) = \frac{s + 3}{s^{2} + 3s + 2} \end{align*}

소스


clear all
num = [1 3]; %전달함수의 분자의 계수
den = [1 3 2]; %전달함수의 분모의 계수
G = tf(num,den);
rlocus(G);
axis('equal'); %좌표축 간격을 일정하게 세팅



결과
사용자 삽입 이미지

2010. 1. 17. 10:42

[MATLAB] dsolve를 이용해 상미분방정식 풀기

\begin{align*} y'' + 3y' + 2y = t, \; y(0) = 0, \: y'(0) = 0 \end{align*}


소스


clear all
syms y t;
sol = dsolve('D2y+3*Dy+2*y = sin(t)','y(0)=0', 'Dy(0)=0');
pretty(sol);

결과
사용자 삽입 이미지

2010. 1. 17. 10:36

[MATLAB] laplace를 이용해 라플라스 변환 구하기

소스

clear all
syms t a b;
F = t^2 + sin(a*t) - t*cos(b*t);
L = laplace(F);
pretty(L);



결과

사용자 삽입 이미지

2010. 1. 17. 10:34

[MATLAB] slu.m을 이용하여 주어진 matrix를 LU분해하기

Note : Gauss elimination 과정에서 row exchange가 필요하지 않은 matrix의 경우에만 사용할 수 있는 함수이다.



소스


clear all
A = [1 1 1; 1 2 3; 0 2 5];
[L U] = slu(A)


결과


L =

     1     0     0
     1     1     0
     0     2     1


U =

     1     1     1
     0     1     2


첨부파일 출처 : http://web.mit.edu/18.06/www/Course-Info/Tcodes.html

2009. 10. 19. 20:29

[MATLAB] mesh와 meshgrid를 이용한 3차원 그래프 그리기

소스


clear all
[x y] = meshgrid(-2:.2:2, -2:.2:2);
z = x.*exp(-x.^2 - y.^2);
mesh(z)

결과


사용자 삽입 이미지
2009. 10. 19. 20:27

[MATLAB] 전달함수로 부터 control canonical form 얻기


전달함수로 부터 control canonical form으로 나타낸 system matrix, input matrix, output matrix, direct transmission term 을 구한다.


소스


clear all
num = [1 2];
den = [1 7 12];
[F G H J] = tf2ss(num,den)

결과


F =

    -7   -12
     1     0


G =

     1
     0


H =

     1     2


J =

     0

2009. 10. 19. 20:26

[MATLAB] symbolic 객체를 이용한 적분

소스


clear all
syms x y;
y = x^2;
int(y,x)

결과


ans =
 
1/3*x^3
2009. 10. 19. 20:24

[MATLAB] matlab에서 수치적분 하기 quad

표준정규분포에서 0<X<2 일 확률을 적분을 통해 구하면


소스


clear all
quad('1/sqrt(2*pi)*exp(-t.^2/2)',0,2)

결과


ans =

    0.3333