간만에 블로그를 올린다.
이번에는 직접 제작한 매트랩 프로그램과 알면 유용한 매트랩 명령어에 대하여 알아보자!
그러기에 앞서, 항상 느끼는 것이지만,,,
매트랩은 공대생들에게 쉽고 유용한 필수도구라고 생각이든다.
짧은코딩으로, 쉽게 목적을 달성할 수 있는지 미리 살필 수 있고, 원리를 파악하기도 쉽다.
하드웨어랑 연결하고 조작도 쉬운것 같은데,,, 아직은 잘 모르겠다.
분명한것은 공부해야할 것들이 무궁무진하게 많고,
쉽게 코딩해서 강력한 기능을 맘대로 사용할 수 있다는 점이다.
수학과 공학 지식의 축적으로 이루어진 거대한 탑...^^
너무 높고, 방대해서 한 사람의 노력으로는 다 이해하기 어려운,,,
아무튼, 멋진 공학의 기초 도구이가 될것이다!ㅎ
그럼 이제, K5 자동차 광고에 이용해서 고급스러움과 신비스러움을 더 해줬던
모스부호의 세계로 빠져봅시다~
아래 광고의 '뚜~ 뚜 뚜~ 뚜 뚜 뚜 뚜 뚜' 의 세련된 음은
모스부호로써 'K5' 를 연속해서 가르키고 있다.
아래코드는 자작한 모스부호생성, 모스부호분석하여 변환하는 프로그램이다.</><>
아직 wave 파일 분석은 일반적이지 못해 좀더 수정해 볼 생각이다.
table={'a' '.-';
'b' '-...';
'c' '-.-.';
'd' '-..';
'e' '.';
'f' '..-.';
'g' '--.';
'h' '....';
'i' '..';
'j' '.---';
'k' '-.-';
'l' '.-..';
'm' '--';
'n' '-.';
'o' '---';
'p' '.--.';
'q' '--.-';
'r' '.-.';
's' '...';
't' '-';
'u' '..-';
'v' '...-';
'w' '.--';
'x' '-..-';
'y' '-.--';
'z' '--..';
'1' '.----';
'2' '..---';
'3' '...--';
'4' '....-';
'5' '.....';
'6' '-....';
'7' '--...';
'8' '---..';
'9' '----.';
'0' '-----'};
code=[];
c=input('문자를 입력해주세요!\n', 's'); c=lower(c);
for i=1:length(c)
for j=1:length(table)
if strcmp(c(i), table{j,1}), code=[code
table{j,2}]; end
end
code=[code ' '];
end
fs=8000;
l=0.1;
dot_t=0:1/fs:l; %
dash_t=0:1/fs:3*l; % -
dot=sin(2*pi*1812.5*dot_t);
dash=sin(2*pi*1812.5*dash_t);
space=zeros(1,length(dot));
code
morse=[];for i=1:length(code)
if strcmp(code(i),'.')
morse=[morse dot];
elseif strcmp(code(i),'-')
morse=[morse dash];
else
morse=[morse space space];
end
morse=[morse space];
end
sound(morse,fs)
% wavwrite(morse,fs,16, c)
% morese=wavread(c)
ev=(abs(hilbert(morse))>0.5);
% s(t)=Re[s_hat(t)·exp(jwt)]=si(t)cos(wt)-sq(t)sin(wt) , s_hat(t)=si(t)+j·sq(t)
evs=downsample(ev,fs*l/8);
re=[]; k=1;
while k~=length(evs)
if length(evs)>=k+23 &
sum(evs(k:k+23))==24, re=[re '-']; k=k+24;
elseif length(evs)>=k+23 &
sum(evs(k:k+23))==0, re=[re ' ']; k=k+24;
elseif length(evs)>=k+7 &
sum(evs(k:k+7))==8, re=[re '.']; k=k+8;
end
k=k+1;
end
id=[1 strfind(re, ' ')+1];
rec=[]; i=1; j=1;
for i=1:length(id)-1
for j=1:length(table)
if strcmp(re(id(i):id(i+1)-2),
table{j,2}), rec=[rec table{j,1}]; end
end
end
upper(rec)
|
별건아니지만, hello world의 순수함으로 만들고, 뿌듯함을 느낀다.ㅎㅎ
다음은 잘 몰랐지만, 알고나면 굉장히 유용한 matlab의 주요한 기능을 살펴보자!
%-----------------------------------------------
% Create a new AVI file%----------------------------------------------- t = linspace(0,2.5*pi,40);
fact = 10*sin(t);
fig=figure;
aviobj = avifile('example.avi')
[x,y,z] = peaks;
for k=1:length(fact)
h = surf(x,y,fact(k)*z);
axis([-3 3 -3 3 -80 80])
axis off
caxis([-90 90])
F = getframe(fig);
aviobj = addframe(aviobj,F);
end
close(fig)
aviobj = close(aviobj);
%-----------------------------------------------
%-----------------------------------------------
% Display wait bar
%-----------------------------------------------
h = waitbar(0,'Please wait...');
for i=1:1000,
% computation here %
waitbar(i/1000,h)
end
%-----------------------------------------------
%-----------------------------------------------
% Display legend
%-----------------------------------------------
x = 0:.2:12;
plot(x,bessel(1,x),x,bessel(2,x),x,bessel(3,x));
legend('First','Second','Third');
legend('First','Second','Third','Location','NorthEastOutside')
%-----------------------------------------------
%-----------------------------------------------
% meshgrid, surf, contour
%-----------------------------------------------
[X,Y] = meshgrid(-1:.1:1);
Z = 1-(X.^2 + Y.^2);
surf(X,Y,Z)
surfc(X,Y,Z)
[C, h]=contour(X, Y, Z);
clabel(C, h)
save('f.mat', 'X', 'Y', 'Z');
load('f.mat')
%-----------------------------------------------
%-----------------------------------------------
% Record and play back 2 seconds of
single audio sampled at 8 kHz
%-----------------------------------------------
Fs = 8000;
y = wavrecord(2*Fs, Fs,
'Single');
wavplay(y, Fs);
%-----------------------------------------------
%-----------------------------------------------
% Calendar
%-----------------------------------------------
calendar(date)
%-----------------------------------------------
%-----------------------------------------------
% Capture
%-----------------------------------------------
vid = videoinput('winvideo', 1,
'YUY2_160x120');
src = getselectedsource(vid);
vid.FramesPerTrigger = 1;
start(vid);
vid.ReturnedColorspace = 'rgb';
nicelcw = getdata(vid);
imshow(nicelcw);
%-----------------------------------------------
%-----------------------------------------------
% Font color
%-----------------------------------------------
a='test';
text(1,1,a,'color','r')
%----------------------------------------------- |
이상,,, 블로그에 업로드하기까지 오랜기간이 걸렸다. 그동안 항상 맘에 있었지만,,,
게을렀다고 할까?!ㅎ
한편으로는 허접한 블로그를 업로드하기위해, 나는 지난날을 그렇게 끙끙댔나보다~
올해,,, 만학도로 대학원을 입학했다.
몇일해본 대학원은 해주는 것을 받아먹는게 아니라,
노력하는 만큼 얻어가는 곳이라는 느낌이 확 든다.
공부해서,,, 졸업 쯔음엔 떳떳하고 멋있게 내 논문 발표할 수 있으면 좋겠다^^
그리고 좋은 블로그를 게시하여,
디지털통신 전공생의 가려운 부분을 박박 긁어주고 싶고, 지식도 나누고 싶다.
나 자신을 위하여 파이팅~!!ㅎ