<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WwW.TarikZengin.CoM &#187; Matlab</title>
	<atom:link href="http://tarikzengin.com/tag/matlab/feed/" rel="self" type="application/rss+xml" />
	<link>http://tarikzengin.com</link>
	<description>Japonya&#039;dan bildiriyor....</description>
	<lastBuildDate>Sat, 01 Oct 2011 06:25:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>[Matlab] Muzik Sentezleme</title>
		<link>http://tarikzengin.com/matlab-muzik-sentezleme/</link>
		<comments>http://tarikzengin.com/matlab-muzik-sentezleme/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 07:19:20 +0000</pubDate>
		<dc:creator>Aydin Tarik Zengin</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[Projeler]]></category>
		<category><![CDATA[Dimmu Borgir]]></category>
		<category><![CDATA[lame]]></category>
		<category><![CDATA[Muzik Sentezleme]]></category>
		<category><![CDATA[Nar Sjelen Hentes Til Helvete]]></category>
		<category><![CDATA[Sentezleme]]></category>
		<category><![CDATA[soundsc]]></category>
		<category><![CDATA[spectogram]]></category>
		<category><![CDATA[Stormblast]]></category>

		<guid isPermaLink="false">http://www.tarikzengin.com/blog/?p=405</guid>
		<description><![CDATA[<a href="http://tarikzengin.com/matlab-muzik-sentezleme/" title="[Matlab] Muzik Sentezleme"></a>Aslinda muzik degil de melodi sentezi desek daha dogru olabilirdi. Cep telefonu melodisi yazmak gibi birsey. Sentezlemeye calisacagimiz melodi pek bir sevdigim Norvec&#8217;li grup Dimmu Borgir&#8217;in 1996 Stormblåst albumundeki Når Sjelen Hentes Til Helvete isimli parcadan. 2005 yilinda Stormblåst albumunu &#8230;<p class="read-more"><a href="http://tarikzengin.com/matlab-muzik-sentezleme/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://tarikzengin.com/matlab-muzik-sentezleme/" title="[Matlab] Muzik Sentezleme"></a><p>Aslinda muzik degil de melodi sentezi desek daha dogru olabilirdi. Cep telefonu melodisi yazmak gibi birsey.</p>
<p>Sentezlemeye calisacagimiz melodi pek bir sevdigim Norvec&#8217;li grup Dimmu Borgir&#8217;in 1996 Stormblåst albumundeki Når Sjelen Hentes Til Helvete isimli parcadan. 2005 yilinda Stormblåst albumunu yeni kayitlarla tekrar cikardilar. Fakat klasiklerin yeri ayri <img src='http://tarikzengin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-405' /> </p>
<p>Youtube&#8217;da buldugum asagidaki video da tam olarak sentezleyecegimiz melodinin piyano ile icra edilmis versiyonu. Hatta daha fazlasi. Yalnizca ilk kismi sentezlemeye calisacagim.<span id="more-405"></span></p>
<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/sRU0G72FVEs" frameborder="0" allowFullScreen="true"> </iframe></p>
<p>Oncelikle notalari gozden gecirelim.</p>
<div id="attachment_407" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-407 colorbox-405" title="notalar" src="http://www.tarikzengin.com/blog/wp-content/uploads/2009/01/notalar-300x283.png" alt="Når Sjelen Hentes Til Helvete" width="300" height="283" /><p class="wp-caption-text">Når Sjelen Hentes Til Helvete</p></div>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">clear</span>
<span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>
<span style="color: #228B22;">% 1-2 olculerin notalari</span>
olcu12=<span style="color: #080;">&#91;</span><span style="color:#A020F0;">'E'</span>,<span style="color:#A020F0;">'f'</span>,<span style="color:#A020F0;">'G'</span>,<span style="color:#A020F0;">'f'</span>, <span style="color:#A020F0;">'E'</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% mi fa# sol fa# mi</span>
zaman12=<span style="color: #080;">&#91;</span><span style="color: #33f;">1</span>/<span style="color: #33f;">4</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% notalarin vurus degerleri</span>
<span style="color: #228B22;">% 3-4 olculerin notalari</span>
olcu34=<span style="color: #080;">&#91;</span><span style="color:#A020F0;">'C'</span>,<span style="color:#A020F0;">'E'</span>,<span style="color:#A020F0;">'F'</span>,<span style="color:#A020F0;">'H'</span>,<span style="color:#A020F0;">'F'</span>,<span style="color:#A020F0;">'E'</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% do mi fa la fa mi</span>
zaman34=<span style="color: #080;">&#91;</span><span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% notalarin vurus degerleri</span>
<span style="color: #228B22;">% 5-6 olculerin notalari</span>
olcu56=<span style="color: #080;">&#91;</span><span style="color:#A020F0;">'A'</span>,<span style="color:#A020F0;">'A'</span>,<span style="color:#A020F0;">'J'</span>,<span style="color:#A020F0;">'H'</span>,<span style="color:#A020F0;">'J'</span>,<span style="color:#A020F0;">'H'</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% la la do la do la</span>
zaman56=<span style="color: #080;">&#91;</span><span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% notalarin vurus degerleri</span>
<span style="color: #228B22;">% 7-8 olculerin notalari</span>
olcu78=<span style="color: #080;">&#91;</span><span style="color:#A020F0;">'D'</span>,<span style="color:#A020F0;">'f'</span>,<span style="color:#A020F0;">'G'</span>,<span style="color:#A020F0;">'I'</span>,<span style="color:#A020F0;">'G'</span>,<span style="color:#A020F0;">'f'</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% re fa# sol si sol fa#</span>
zaman78=<span style="color: #080;">&#91;</span><span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">8</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% notalarin vurus degerleri</span>
zaman90=<span style="color: #080;">&#91;</span><span style="color: #33f;">1</span>/<span style="color: #33f;">4</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">4</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">4</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">2</span> <span style="color: #33f;">1</span>/<span style="color: #33f;">2</span> <span style="color: #33f;">1</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% notalarin vurus degerleri</span>
<span style="color: #228B22;">% zaman90 parca biterken yavaslayan kisim icin gecerli.</span>
<span style="color: #228B22;">%vurus degerleri artarak bitiyor.</span>
&nbsp;
<span style="color: #228B22;">%% matris boyutlari</span>
boyut=<span style="color: #33f;">16384</span>;
aaa=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">4</span>; <span style="color: #228B22;">% 1/4 vuruslu notalar icin geri donen</span>
<span style="color: #228B22;">% fonksiyon degerinin saklanacagi matris boyutu</span>
aa=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">8</span>;  <span style="color: #228B22;">% 1/8 vuruslu notalar icin matris (ilk olcu)</span>
bb=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">8</span>;  <span style="color: #228B22;">% 1/8 vuruslu notalar icin matris (ikinci olcu)</span>
cc=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">8</span>;  <span style="color: #228B22;">% 1/8 vuruslu notalar icin matris (ucuncu olcu)</span>
dd=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">8</span>;  <span style="color: #228B22;">% 1/8 vuruslu notalar icin matris (dorduncu olcu)</span>
<span style="color: #228B22;">%</span>
sona=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">4</span>; <span style="color: #228B22;">% parca bitisindeki yavaslayan kisim icin matris (1/4)</span>
sonb=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">4</span>; <span style="color: #228B22;">% parca bitisindeki yavaslayan kisim icin matris (1/4)</span>
sonc=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">4</span>; <span style="color: #228B22;">% parca bitisindeki yavaslayan kisim icin matris (1/4)</span>
sond=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">2</span>; <span style="color: #228B22;">% parca bitisindeki yavaslayan kisim icin matris (1/2)</span>
sone=<span style="color: #33f;">1</span>:boyut/<span style="color: #33f;">2</span>; <span style="color: #228B22;">% parca bitisindeki yavaslayan kisim icin matris (1/2)</span>
sonf=<span style="color: #33f;">1</span>:boyut; <span style="color: #228B22;">% parca bitisindeki yavaslayan kisim icin matris (1)</span>
&nbsp;
<span style="color: #228B22;">%% olcu 1-2</span>
aaa<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu12<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>,zaman12<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">for</span> z=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman12<span style="color: #080;">&#41;</span>-<span style="color: #33f;">1</span>
aa<span style="color: #080;">&#40;</span>z,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu12<span style="color: #080;">&#40;</span>z+<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>,zaman12<span style="color: #080;">&#40;</span>z+<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #228B22;">%% olcu 3-4</span>
<span style="color: #0000FF;">for</span> z=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman34<span style="color: #080;">&#41;</span>
bb<span style="color: #080;">&#40;</span>z,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu34<span style="color: #080;">&#40;</span>z<span style="color: #080;">&#41;</span>,zaman34<span style="color: #080;">&#40;</span>z<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #228B22;">%% olcu 5-6</span>
<span style="color: #0000FF;">for</span> z=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman56<span style="color: #080;">&#41;</span>
cc<span style="color: #080;">&#40;</span>z,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu56<span style="color: #080;">&#40;</span>z<span style="color: #080;">&#41;</span>,zaman56<span style="color: #080;">&#40;</span>z<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #228B22;">%% olcu 7-8</span>
<span style="color: #0000FF;">for</span> z=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman78<span style="color: #080;">&#41;</span>
dd<span style="color: #080;">&#40;</span>z,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu78<span style="color: #080;">&#40;</span>z<span style="color: #080;">&#41;</span>,zaman78<span style="color: #080;">&#40;</span>z<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #228B22;">%% olcu 9-0</span>
sona<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu78<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>,zaman90<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
sonb<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu78<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>,zaman90<span style="color: #080;">&#40;</span><span style="color: #33f;">2</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
sonc<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu78<span style="color: #080;">&#40;</span><span style="color: #33f;">3</span><span style="color: #080;">&#41;</span>,zaman90<span style="color: #080;">&#40;</span><span style="color: #33f;">3</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
sond<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu78<span style="color: #080;">&#40;</span><span style="color: #33f;">4</span><span style="color: #080;">&#41;</span>,zaman90<span style="color: #080;">&#40;</span><span style="color: #33f;">4</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
sone<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu78<span style="color: #080;">&#40;</span><span style="color: #33f;">5</span><span style="color: #080;">&#41;</span>,zaman90<span style="color: #080;">&#40;</span><span style="color: #33f;">5</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
sonf<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span>=nota<span style="color: #080;">&#40;</span>olcu78<span style="color: #080;">&#40;</span><span style="color: #33f;">6</span><span style="color: #080;">&#41;</span>,zaman90<span style="color: #080;">&#40;</span><span style="color: #33f;">6</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #228B22;">%% tum dizileri arka arkaya diz</span>
xx=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
yy=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
zz=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
ww=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
<span style="color: #0000FF;">for</span> say=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman12<span style="color: #080;">&#41;</span>-<span style="color: #33f;">1</span>
xx=<span style="color: #080;">&#91;</span>xx aa<span style="color: #080;">&#40;</span>say,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #0000FF;">for</span> say=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman34<span style="color: #080;">&#41;</span>
yy=<span style="color: #080;">&#91;</span>yy bb<span style="color: #080;">&#40;</span>say,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #0000FF;">for</span> say=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman56<span style="color: #080;">&#41;</span>
zz=<span style="color: #080;">&#91;</span>zz cc<span style="color: #080;">&#40;</span>say,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #0000FF;">for</span> say=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>zaman78<span style="color: #080;">&#41;</span>
ww=<span style="color: #080;">&#91;</span>ww dd<span style="color: #080;">&#40;</span>say,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #228B22;">%% dizilerin hepsini cal.</span>
tumdizi=<span style="color: #080;">&#91;</span>aaa xx aaa xx yy yy zz zz ww ww aaa xx aaa xx yy yy zz zz ww sona sonb sonc sond sone sonf<span style="color: #080;">&#93;</span>;
<span style="color: #0000FF;">soundsc</span><span style="color: #080;">&#40;</span>tumdizi,<span style="color: #33f;">11025</span><span style="color: #080;">&#41;</span>;
<span style="color: #228B22;">%bitti :)</span></pre></div></div>

<p>En son kisimda, parcada olmayan bir sekilde yavaslatarak bitirdim <img src='http://tarikzengin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-405' />  O da benim yorumum olsun.</p>
<p>Burada kullandigim nota fonksiyonunu da ayri bir dosyada yazdim. O da su sekilde,</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">function</span>  <span style="color: #080;">&#91;</span>a<span style="color: #080;">&#93;</span>=nota<span style="color: #080;">&#40;</span>note,vurus<span style="color: #080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">switch</span> note
<span style="color: #228B22;">%% native notalar</span>
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'A'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%la</span>
frekans=<span style="color: #33f;">440</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'a'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%la#</span>
frekans=<span style="color: #33f;">466.16</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'B'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%si</span>
frekans=<span style="color: #33f;">493.92</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'C'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%do</span>
frekans=<span style="color: #33f;">523.28</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'c'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%do#</span>
frekans=<span style="color: #33f;">554.40</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'D'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%re</span>
frekans=<span style="color: #33f;">587.36</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'d'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%re#</span>
frekans=<span style="color: #33f;">622.24</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'E'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%mi</span>
frekans=<span style="color: #33f;">659.28</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'F'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%fa</span>
frekans=<span style="color: #33f;">698.48</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'f'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%fa#</span>
frekans=<span style="color: #33f;">740</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'G'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%sol</span>
frekans =<span style="color: #33f;">784</span>;
<span style="color: #228B22;">%% oktav yukari</span>
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'H'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%la</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">440</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'h'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%la#</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">466.16</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'I'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%si</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">493.92</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'J'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%do</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">523.28</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'j'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%do#</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">554.40</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'K'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%re</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">587.36</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'k'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%re#</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">622.24</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'L'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%mi</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">659.28</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'M'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%fa</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">698.48</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'m'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%fa#</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">740</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'N'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%sol</span>
frekans=<span style="color: #33f;">2</span>*<span style="color: #33f;">784</span>;
<span style="color: #228B22;">%% oktav asagi</span>
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'O'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%la</span>
frekans=<span style="color: #33f;">440</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'o'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%la#</span>
frekans=<span style="color: #33f;">466.16</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'P'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%si</span>
frekans=<span style="color: #33f;">493.92</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'Q'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%do</span>
frekans=<span style="color: #33f;">523.28</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'q'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%do#</span>
frekans=<span style="color: #33f;">554.40</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'R'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%re</span>
frekans=<span style="color: #33f;">587.36</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'r'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%re#</span>
frekans=<span style="color: #33f;">622.24</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'S'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%mi</span>
frekans=<span style="color: #33f;">659.28</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'T'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%fa</span>
frekans=<span style="color: #33f;">698.48</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'t'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%fa#</span>
frekans=<span style="color: #33f;">740</span>/<span style="color: #33f;">2</span>;
<span style="color: #0000FF;">case</span> <span style="color: #080;">&#123;</span><span style="color:#A020F0;">'U'</span><span style="color: #080;">&#125;</span> <span style="color: #228B22;">%sol</span>
frekans =<span style="color: #33f;">784</span>/<span style="color: #33f;">2</span>;
<span style="color: #228B22;">%% diger durumlar</span>
<span style="color: #0000FF;">otherwise</span>
<span style="color: #0000FF;">disp</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Yok boyle bisey'</span><span style="color: #080;">&#41;</span>
frekans=<span style="color: #33f;">0</span>;
<span style="color: #0000FF;">end</span>
<span style="color: #228B22;">%% Belirlenen frekansda ve vurus suresinde sinus</span>
<span style="color: #228B22;">%  sinyali fonksiyonun cikisina veriliyor.</span>
a=<span style="color: #0000FF;">sin</span><span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>*<span style="color: #0000FF;">pi</span>*frekans*<span style="color: #080;">&#40;</span><span style="color: #33f;">0</span>:<span style="color: #33f;">1</span>/<span style="color: #33f;">16383</span>:vurus<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;</pre></div></div>

<p>Burada cozemedigim ve aklimi kurcalayan bir soru var. <strong>soundsc</strong> komutu ile tumdizi matrisini sese donustururken kullandigim ornekleme frekansi denedigim farkli bilgisayarlarda farkli sonuclar verdi. Bazisinda 44100 kullandigimda, bazisinda ise buradaki gibi 11025 kullandigimda dogru sonucu verdi. Nedenini cozemedim.</p>
<p>Ayrica kodun yukaridaki kismina ek olarak, olusan matrisin spektogramini da cizdiriyordum. Fakat su anda kullandigim Matlab&#8217;in surumu ile daha once kullandigim arasinda bir uyumsuzluk var. O yuzden bir sorun cikti. O kismi da su sekilde idi,</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% spektrumlari cizdir</span>
<span style="color: #0000FF;">subplot</span><span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>,<span style="color: #33f;">1</span>,<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
spectogram<span style="color: #080;">&#40;</span>tumdizi,<span style="color: #33f;">1024</span>,<span style="color: #33f;">6950</span>,<span style="color: #33f;">256</span>,<span style="color: #33f;">192</span><span style="color: #080;">&#41;</span>;    <span style="color: #228B22;">% tumdizinin spektrumunu cizdir.</span>
<span style="color: #0000FF;">grid</span> on;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Yapay Sinyalin Spektrumu'</span><span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">subplot</span><span style="color: #080;">&#40;</span><span style="color: #33f;">2</span>,<span style="color: #33f;">1</span>,<span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>;
wav=<span style="color: #0000FF;">wavread</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'sinyal1.wav'</span>,<span style="color: #080;">&#91;</span><span style="color: #33f;">2000</span> <span style="color: #33f;">12000</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>;     <span style="color: #228B22;">% gercek sesi import et</span>
spectogram<span style="color: #080;">&#40;</span>wav,<span style="color: #33f;">2048</span>,<span style="color: #33f;">44100</span>,<span style="color: #33f;">1024</span>,<span style="color: #33f;">256</span><span style="color: #080;">&#41;</span>;        <span style="color: #228B22;">% sesin spektrumunu cizdir.</span>
<span style="color: #0000FF;">grid</span> on;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Gercek Sesin Spektrumu'</span><span style="color: #080;">&#41;</span></pre></div></div>

<p>Sonucta ortaya cikan matrisi de bir wav dosyasina yazdirip</p>
<p><strong>lame girdi.wav cikti.mp3</strong></p>
<p>seklinde basitce mp3&#8242;e donusturdukten sonra burada dinlenebilir hale geldi.</p>
<p><a href="http://www.tarikzengin.com/audio/dimmu.mp3">http://www.tarikzengin.com/audio/dimmu.mp3</a></p>
<p>Sarkinin orijinal hali de burada. Bir ihtimal oldschool black metal sevenler cikabilir <img src='http://tarikzengin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-405' />  Once 1996, ardindan da 2005 versiyonu geliyor, tum sevenler icin.</p>
<ul>
<li>00:00 &#8211; 04:30 1996 versiyonu</li>
<li>04:30 &#8211; 09:12 2005 versiyonu</li>
</ul>
<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/legSvvYphaY" frameborder="0" allowFullScreen="true"> </iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://tarikzengin.com/matlab-muzik-sentezleme/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.tarikzengin.com/blog/audio/dimmu.mp3" length="351920" type="audio/mpeg" />
<enclosure url="http://www.tarikzengin.com/audio/dimmu.mp3" length="351920" type="audio/mpeg" />
		</item>
		<item>
		<title>[Matlab] Pan Tompkins Algoritması Kullanılarak EKG&#8217;de QRS Complex Tespiti ve Ritm Analizi</title>
		<link>http://tarikzengin.com/matlab-ekg-analizi/</link>
		<comments>http://tarikzengin.com/matlab-ekg-analizi/#comments</comments>
		<pubDate>Sun, 16 Dec 2007 16:39:13 +0000</pubDate>
		<dc:creator>Aydin Tarik Zengin</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[Projeler]]></category>
		<category><![CDATA[Avarage Filter]]></category>
		<category><![CDATA[Comb filter]]></category>
		<category><![CDATA[Derivative Based Filter]]></category>
		<category><![CDATA[ECG]]></category>
		<category><![CDATA[EKG]]></category>
		<category><![CDATA[Heart Beat]]></category>
		<category><![CDATA[Pan Tompkins]]></category>
		<category><![CDATA[QRS Complex]]></category>

		<guid isPermaLink="false">http://tarikzengin.wordpress.com/2007/12/16/matlab-ekg-analizi/</guid>
		<description><![CDATA[<a href="http://tarikzengin.com/matlab-ekg-analizi/" title="[Matlab] Pan Tompkins Algoritması Kullanılarak EKG&#039;de QRS Complex Tespiti ve Ritm Analizi"></a>Biomedical Signal Analysis dersinde Timur Düzenli ve Salih Aslan ile beraber yaptığımız bir proje bu. EKG verileri üzerinden QRS Complex kısımlarının tespitinden bahsedeceğim. Öncelikle nedir ve neden önemlidir buna değinelim. Çoğumuzun bildiği üzere EKG (ECG &#8211; Electrocardiogram) kalp aktivitelerinin elektriksel &#8230;<p class="read-more"><a href="http://tarikzengin.com/matlab-ekg-analizi/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://tarikzengin.com/matlab-ekg-analizi/" title="[Matlab] Pan Tompkins Algoritması Kullanılarak EKG&#039;de QRS Complex Tespiti ve Ritm Analizi"></a><p>Biomedical Signal Analysis dersinde Timur Düzenli ve Salih Aslan ile beraber yaptığımız bir proje bu. EKG verileri üzerinden QRS Complex kısımlarının tespitinden bahsedeceğim. Öncelikle nedir ve neden önemlidir buna değinelim.</p>
<p>Çoğumuzun bildiği üzere EKG (ECG &#8211; Electrocardiogram) kalp aktivitelerinin elektriksel olarak kaydıdır. Electrocardiograph ile ölçülerek kaydedilir.</p>
<p>EKG analiz edilerek kalp hakkında oldukça detaylı bilgiler elde edilebilir. Tıp okumadığım için çok detaylı bilemem tabii ki. Fakat EKG sinyalinin birazdan bahsedeceğim kısımlarının zamanlaması hastalıklar hakkında oldukça yararlı bilgiler sağlamaktadır.<span id="more-161"></span></p>
<p>Tipik bir EKG sinyali aşağıdaki şekilde gösterilebilir.</p>
<p><img class="aligncenter size-full wp-image-162 colorbox-161" title="EKG" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/ekg.png" alt="EKG" width="512" height="504" /></p>
<p>Burada görüleceği gibi EKG sinyali belirli tipik kısımlar içerir. Bunlar P,Q,R,S ve T kısımlarıdır. Hepsi kalp hakkında önemli bilgiler taşır. Bu yazıda, sinyalde QRS Complex&#8217;in yerinin bulunmasından bahsedeceğim. Bu bilgi önemlidir çünkü QRS Complex&#8217;in kaç milisaniye sürdüğü çıplak gözle anlaşılamaz.</p>
<p>Konuya girmeden önce şundan da bahsetmek isterim. Doktorların, ellerine gelen EKG kaydına bakarak karar vermesinde bahsedeceğim konu oldukça önem taşır. EKG sinyalleri elektriksel olarak zayıf sinyaller olduğu için kaydedilmesi ve çevre gürültülerden arındırılması işi oldukça zahmetlidir. Demek istediğim, ham bir EKG kaydından hiç bir doktor hiç bir teşhis koyamaz. O şeritteki net ve anlaşılır EKG&#8217;nin nasıl o hale geldiğini ele alacağız. Fakat tüm aşamaları koca bir kitap yapan bu analizin sadece küçük bir kısmı bu yazıca mevcut.</p>
<p>Analiz için kullanacağım önceden kaydedilmiş EKG verileri elimde mevcut.  4000 örnekten oluşan veriyi <a title="EKG Verisi" href="http://paste.linux-sevenler.org/index.php?id=1376" target="_blank">şuradan</a> alabilirsiniz.</p>
<p>Analize başlayalım,</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>
<span style="color: #0000FF;">clear</span> <span style="color: #0000FF;">all</span>
<span style="color: #0000FF;">clc</span>
&nbsp;
<span style="color: #228B22;">%% Degisken ve Sabitlerin Tanimlanmasi</span>
fs=<span style="color: #33f;">200</span>; <span style="color: #228B22;">% sample rate</span>
&nbsp;
<span style="color: #228B22;">%% Sinyalin Matlab Ortamina Alinmasi</span>
hamsinyal=<span style="color: #0000FF;">load</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'ECG3'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>hamsinyal<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Ham Sinyal'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">figure</span></pre></div></div>

<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="Hamsinyal" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/1.png" alt="Ham Sinyal" width="560" height="420" /><p class="wp-caption-text">Ham Sinyal</p></div>
<p>Görüldüğü gibi sinyal oldukça fazla gürültü içeriyor. Hem yüksek frekanslı hem de şebekeden kaynaklanan ek bileşenler sinyale karışmış durumda. Öncelikle sinyali DC sıfır seviyesine çekelim</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% DC Bilesenlerin Atilmasi</span>
dcsizsinyal=<span style="color: #080;">&#40;</span>hamsinyal-<span style="color: #0000FF;">mean</span><span style="color: #080;">&#40;</span>hamsinyal<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>dcsizsinyal<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'DC Bilesenleri Atilan Sinyal'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">figure</span></pre></div></div>

<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="DCsiz Sinyal" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/2.png" alt="DCsiz Sinyal" width="560" height="420" /><p class="wp-caption-text">DCsiz Sinyal</p></div>
<p>Şimdi de sinyalden yüksek frekanslı gürültüleri temizleyelim. Bunun için bir alçak geçiren (low pass) filtre tasarlayıp sinyali bu filtreden geçirmemiz gerekli. Filtre tipi olarak 10 point avarage filtre kullanalım.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% Filtre</span>
<span style="color: #228B22;">% 10 point avarage filter</span>
B=<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>/<span style="color: #33f;">10</span><span style="color: #080;">&#41;</span>*<span style="color: #0000FF;">ones</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,<span style="color: #33f;">10</span><span style="color: #080;">&#41;</span>;
A=<span style="color: #33f;">1</span>;
freqz<span style="color: #080;">&#40;</span>B,A<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'10 Point Moving Avarage Filtre'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">figure</span>
avaragefiltrelisinyal=<span style="color: #0000FF;">filter</span><span style="color: #080;">&#40;</span>B,A,dcsizsinyal<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>avaragefiltrelisinyal<span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Moving Avarage (Low Pass) Filtreden Gecmis Sinyal'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">figure</span></pre></div></div>

<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="Low Pass Filtre" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/3.png" alt="Low Pass Filtre" width="560" height="420" /><p class="wp-caption-text">Low Pass Filtre</p></div>
<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="Low Pass Cikisi" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/4.png" alt="Low Pass Cikisi" width="560" height="420" /><p class="wp-caption-text">Low Pass Cikisi</p></div>
<p>Yüksek frekanslı gürültülerin azaldığını görebiliriz. Fakat hala kusursuz değil. Şimdi de düşük frekanslı gürültüleri yok etmek için bir yüksek geçiren (high pass) filtre tasarlayıp sinyali bu filtreden geçirelim. Bunun için de Derivative Based filtre oluşturacağız.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% Derivative Based Filter</span>
B=<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>/<span style="color: #33f;">1.0025</span><span style="color: #080;">&#41;</span>*<span style="color: #080;">&#91;</span><span style="color: #33f;">1</span> -<span style="color: #33f;">1</span><span style="color: #080;">&#93;</span>;<span style="color: #228B22;">% 1.0025 normalizasyon degeri</span>
A=<span style="color: #080;">&#91;</span><span style="color: #33f;">1</span> -<span style="color: #33f;">0.995</span><span style="color: #080;">&#93;</span>;
freqz<span style="color: #080;">&#40;</span>B,A<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Derivative Based Filter'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">figure</span>
derivativefiltrelisinyal=<span style="color: #0000FF;">filter</span><span style="color: #080;">&#40;</span>B,A,avaragefiltrelisinyal<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>derivativefiltrelisinyal<span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Derivative Based (High Pass) Filtreden Gecmis Sinyal'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">figure</span></pre></div></div>

<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="Derivative Filtre" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/5.png" alt="Derivative Filtre" width="560" height="420" /><p class="wp-caption-text">Derivative Filtre</p></div>
<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="Derivative Cikisi" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/6.png" alt="Derivative Cikisi" width="560" height="420" /><p class="wp-caption-text">Derivative Cikisi</p></div>
<p>Sinyalden atmamız gereken bir de 60Hz&#8217;lik şebeke gürültüsü var. Kayıt esnasında cihazın şehir şebekesinden kaptığı gürültü de sinyalle beraber kaydedilmiş durumda. Zaten bakıldığında çıplak gözle de görülebiliyor. Bu arada kullandığımız örnek yabancı bir kaynaktan olduğu için şebeke gürültüsü 60Hz. Bizim şebekemiz 50Hz. Onu da hatırlatayım.</p>
<p>60Hz&#8217;lik gürültüyü atmak için bir filtre tasarlanacak ve önceki filtreden çıkan sinyal bu filtreden geçirilecek. Önemli bir sorun da, şebekeden kapılan gürültünün yalnızca 60Hz değil aynı zamanda bunun harmonikleri olarak ortaya çıkması. Bu yüzden yalnızca 60Hz&#8217;i bastıran bir filtre işimiz görmeyecek. Bunun için 60Hz ve tüm harmoniklerini bastırmamızı sağlayacak bir Comb filtre tasarlamamız gerekir. Aşağıda yazdığım filtre katsayılarının nasıl bulunduğuna değinmeyeceğim, zira çok uzun mesele <img src='http://tarikzengin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-161' />  Zaten ben de hazır kullandım. Bulmaya çalışmak apayrı bir mesele.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% Comb Filter</span>
<span style="color: #228B22;">% 60Hz sebeke gurultusunu ve harmoniklerini bastiran filtre</span>
B=<span style="color: #0000FF;">conv</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#91;</span><span style="color: #33f;">1</span> <span style="color: #33f;">1</span><span style="color: #080;">&#93;</span>,<span style="color: #080;">&#91;</span><span style="color: #33f;">0.6310</span> -<span style="color: #33f;">0.2149</span> <span style="color: #33f;">0.1512</span> -<span style="color: #33f;">0.1288</span> <span style="color: #33f;">0.1227</span> -<span style="color: #33f;">0.1288</span> <span style="color: #33f;">0.1512</span> -<span style="color: #33f;">0.2149</span> <span style="color: #33f;">0.6310</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>;
A=<span style="color: #33f;">1</span>;
freqz<span style="color: #080;">&#40;</span>B,A<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Comb Filter'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">figure</span>
comb=<span style="color: #0000FF;">filter</span><span style="color: #080;">&#40;</span>B,A,derivativefiltrelisinyal<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>comb<span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Comb (60Hz ve Harmoniklerini Bastiran) Filtreden Gecmis Sinyal'</span><span style="color: #080;">&#41;</span>;</pre></div></div>

<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="Comb Filtre" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/7.png" alt="Comb Filtre" width="560" height="420" /><p class="wp-caption-text">Comb Filtre</p></div>
<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="Comb Cikisi" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/8.png" alt="Comb Cikisi" width="560" height="420" /><p class="wp-caption-text">Comb Cikisi</p></div>
<p>Çok kusursuz olmasa da sinyal işlenebilecek hale geldi. Şimdi ise fark alarak sinyaldeki en keskin tepeleri bulalım. Bunlar bize R noktalarını verecek. Ardından da bu R noktasının sağında ve solunda en düşük seviyedeki noktaları bulalım. Bunlar da Q ve S noktalarını verecek.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% Differentiator</span>
differentiatorcikisi=<span style="color: #0000FF;">diff</span><span style="color: #080;">&#40;</span>comb<span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #228B22;">%% Squaring Operation</span>
kare=differentiatorcikisi.*differentiatorcikisi;
&nbsp;
<span style="color: #228B22;">%% Moving Window Integrator</span>
window=<span style="color: #0000FF;">ones</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,<span style="color: #33f;">30</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% N=30 moving window</span>
integral= medfilt1<span style="color: #080;">&#40;</span><span style="color: #0000FF;">filter</span><span style="color: #080;">&#40;</span>window,<span style="color: #33f;">1</span>,kare<span style="color: #080;">&#41;</span>,<span style="color: #33f;">10</span><span style="color: #080;">&#41;</span>;
delay = <span style="color: #0000FF;">ceil</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>window<span style="color: #080;">&#41;</span>/<span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>;
integral = integral<span style="color: #080;">&#40;</span>delay:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>integral<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
&nbsp;
<span style="color: #228B22;">%% QRS Arama</span>
max_h = <span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>integral<span style="color: #080;">&#41;</span>;
thresh = <span style="color: #33f;">0.2</span>;
poss_reg = integral &gt; <span style="color: #080;">&#40;</span>thresh*max_h<span style="color: #080;">&#41;</span>;
&nbsp;
sol = <span style="color: #0000FF;">find</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">diff</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#91;</span><span style="color: #33f;">0</span> poss_reg'<span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>==<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
sag = <span style="color: #0000FF;">find</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">diff</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#91;</span>poss_reg' <span style="color: #33f;">0</span><span style="color: #080;">&#93;</span><span style="color: #080;">&#41;</span>==-<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>;
&nbsp;
 <span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">i</span></span>=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>sol<span style="color: #080;">&#41;</span>
    <span style="color: #080;">&#91;</span>maxdeger<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span> maxloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span> = <span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span> comb<span style="color: #080;">&#40;</span>sol<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>:sag<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span> <span style="color: #080;">&#41;</span>;
    maxloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span> = maxloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>-<span style="color: #33f;">1</span>+sol<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% offset ekle</span>
    <span style="color: #080;">&#91;</span>mindeger<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span> minloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#93;</span> = <span style="color: #0000FF;">min</span><span style="color: #080;">&#40;</span> comb<span style="color: #080;">&#40;</span>sol<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>:sag<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span> <span style="color: #080;">&#41;</span>;
    <span style="color: #228B22;">%mindeger Q noktasini verir</span>
    minloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span> = minloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>-<span style="color: #33f;">1</span>+sol<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% offset ekle</span>
    <span style="color: #228B22;">% Q noktasi icin offset</span>
 <span style="color: #0000FF;">end</span>
&nbsp;
<span style="color: #228B22;">% minpozisyon=ones(1,4000)*-max(comb);</span>
<span style="color: #228B22;">% minpozisyon(1,minloc)=max(comb);</span>
maxpozisyon=<span style="color: #0000FF;">ones</span><span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,<span style="color: #33f;">4000</span><span style="color: #080;">&#41;</span>*<span style="color: #080;">&#40;</span>-<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>comb<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
maxpozisyon<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,maxloc<span style="color: #080;">&#41;</span>=<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>comb<span style="color: #080;">&#41;</span>;
<span style="color: #228B22;">% maxpozisyon(1,sol)=max(comb);</span>
<span style="color: #228B22;">% maxpozisyon(1,sag)=max(comb);</span>
<span style="color: #228B22;">% maxpozisyon(1,minloc)=max(comb);</span>
&nbsp;
<span style="color: #0000FF;">figure</span>
<span style="color: #228B22;">% plot(comb(1:(length(comb)/4)),'b-')</span>
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>comb<span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'R noktalari belirlenmis sinyal'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">hold</span> on
<span style="color: #228B22;">% plot(minloc,mindeger,'r--')</span>
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>maxloc,maxdeger,<span style="color:#A020F0;">'g-'</span><span style="color: #080;">&#41;</span>
&nbsp;
<span style="color: #0000FF;">figure</span>
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>comb<span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'R noktalari isaretlenmis sinyal'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">hold</span> on
<span style="color: #228B22;">%plot(minpozisyon,'r') % Q baslangici</span>
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>maxpozisyon,<span style="color:#A020F0;">'r'</span><span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">legend</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Comb Filtreden Gecen Sinyal'</span>,<span style="color:#A020F0;">'R'</span><span style="color: #080;">&#41;</span>;</pre></div></div>

<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="R leri Birlestir" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/9.png" alt="R leri Birlestir" width="560" height="420" /><p class="wp-caption-text">R leri Birlestir</p></div>
<div id="attachment_292" class="wp-caption aligncenter" style="width: 570px"><img class="size-full wp-image-292 colorbox-161" title="R leri Isaretle" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/12/10.png" alt="R leri Isaretle" width="560" height="420" /><p class="wp-caption-text">R leri Isaretle</p></div>
<p>Görüldüğü gibi QRS Complex&#8217;in yeri artık tam olarak bilinebiliyor. İstenen ölçümler buradan çıkarılabilir.</p>
<p>Bu arada sondan üçüncü Complex&#8217;de bir hata var. Algoritma burada hatalı sonuç veriyor. Gürültülerin kusursuz bir şekilde atılamamasından kaynaklanan bir hata söz konusu. P noktası olması gerekenden daha büyük olduğu için R olarak algılanmış ve bir hataya sebebiyet vermiş. Fakat sinyalin geri kalanı istediğimiz veriyi elde etmemiz için yeterli veriyi sağlıyor.</p>
<p>Şimdi elde ettiğimiz verilerden bazı sonuçlara ulaşmaya çalışalım. Girilen veride kaç adet beat (vuruş) bulunduğunu tespit edelim. R noktalarını tespit ettiğimize göre ve R noktası kadar vuruş bulunduğunu bildiğime göre kolaylıkla sonuca ulaşabiliriz.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% Beat Sayisi</span>
beat=<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>maxloc<span style="color: #080;">&#41;</span>
heartrate=beat/<span style="color: #080;">&#40;</span><span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>hamsinyal<span style="color: #080;">&#41;</span>/fs<span style="color: #080;">&#41;</span></pre></div></div>

<p>Cevap olarak şu sonuçları elde ediyoruz.</p>
<p>beat =</p>
<p>25<br />
heartrate =</p>
<p>1.2500</p>
<p>Analiz sırasında P noktalarından birisi de R olarak algılanmıştı. Aslında beat sayısı 24 olmalıydı.</p>
<p>Şimdi de RR aralığının ortalamasını bulalım.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% RR Araligi Ortalamasi</span>
ortalama=<span style="color: #33f;">0</span>;
<span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">i</span></span>=<span style="color: #33f;">1</span>:beat-<span style="color: #33f;">1</span>
    ortalama=ortalama+<span style="color: #080;">&#40;</span>maxloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span>+<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>-maxloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>-<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>/fs;
    u<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>=<span style="color: #080;">&#40;</span>maxloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span>+<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>-maxloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>-<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span>/fs;
<span style="color: #0000FF;">end</span>
ortalama=<span style="color: #33f;">1000</span>*ortalama/beat
<span style="color: #228B22;">% ms cinsinden bulmak icin 1000 ile carpildi.</span></pre></div></div>

<p>Sonuç olarak elde edilen çıktı,</p>
<p>ortalama =</p>
<p>745.8000</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">%% Standart Sapma</span>
variance=<span style="color: #0000FF;">var</span><span style="color: #080;">&#40;</span>u<span style="color: #080;">&#41;</span>*<span style="color: #33f;">1000</span> <span style="color: #228B22;">%ms cinsinden</span></pre></div></div>

<p>variance =   22.4692</p>
<p>QRS genişliklerinin tespiti için ise zaten bulmuş olduğumuz noktaların farkları alınabilir.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #228B22;">% QRS Genisligi</span>
<span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">i</span></span>=<span style="color: #33f;">1</span>:beat
    qrs<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>=sag<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>-minloc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>
<span style="color: #0000FF;">end</span></pre></div></div>

<p>Çıktısında da QRS genişliklerinin birbirine yakın değerde olduğu gözlenebilir.</p>
<p>Görüldüğü gibi hastalık teşhisi için canla başla çalışanlar yalnızca doktorlar değil <img src='http://tarikzengin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley colorbox-161' />  Bizleri de unutmayın.</p>
]]></content:encoded>
			<wfw:commentRss>http://tarikzengin.com/matlab-ekg-analizi/feed/</wfw:commentRss>
		<slash:comments>87</slash:comments>
		</item>
		<item>
		<title>[Matlab] Pitch Frequency Estimation</title>
		<link>http://tarikzengin.com/pitch-frequency-estimation/</link>
		<comments>http://tarikzengin.com/pitch-frequency-estimation/#comments</comments>
		<pubDate>Sat, 02 Jun 2007 09:30:12 +0000</pubDate>
		<dc:creator>Aydin Tarik Zengin</dc:creator>
				<category><![CDATA[Matlab]]></category>
		<category><![CDATA[Projeler]]></category>
		<category><![CDATA[Correlation]]></category>
		<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Korelasyon]]></category>
		<category><![CDATA[Pitch]]></category>
		<category><![CDATA[Proje]]></category>
		<category><![CDATA[Unvoiced]]></category>
		<category><![CDATA[Voiced]]></category>

		<guid isPermaLink="false">http://tarikzengin.wordpress.com/2007/06/02/pitch-frequency-estimation/</guid>
		<description><![CDATA[<a href="http://tarikzengin.com/pitch-frequency-estimation/" title="[Matlab] Pitch Frequency Estimation"></a>Bu projede Matlab ortamında, önceden kaydedilmiş olan bir bayan sesinin &#8220;Pitch Frequency&#8221; analizi yapılarak segmentasyon işlemi gerçekleştirilmiş ve sesli/sessiz segmentler ayırt edilerek sinyalin sesli segmentlerinin ortalaması çıkarılmıştır. Proje, ses tanıma algoritmalarına giriş niteliğinde bir ön bilgi olarak sayılabilir. İçerik Değişkenlerin &#8230;<p class="read-more"><a href="http://tarikzengin.com/pitch-frequency-estimation/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://tarikzengin.com/pitch-frequency-estimation/" title="[Matlab] Pitch Frequency Estimation"></a><p>Bu projede Matlab ortamında, önceden kaydedilmiş olan bir bayan sesinin &#8220;Pitch Frequency&#8221; analizi yapılarak segmentasyon işlemi gerçekleştirilmiş ve sesli/sessiz segmentler ayırt edilerek sinyalin sesli segmentlerinin ortalaması çıkarılmıştır. Proje, ses tanıma algoritmalarına giriş niteliğinde bir ön bilgi olarak sayılabilir.</p>
<p><strong>İçerik</strong></p>
<ul>
<li>Değişkenlerin Tanımlanması</li>
<li> İşlenecek Sinyalin Matlab Ortamına Alınması</li>
<li> Sinyalden DC Bileşenlerin Atılması</li>
<li> Segmentasyonda 	Kullanılacak Değişkenlerin Belirlenmesi</li>
<li> Silence Analizi İçin Gerekli Değişkenlerin Bulunması</li>
<li> Silence Olan Segmentlerin Atılması</li>
<li> Clipping Level Parametrelerinin Elde Edilmesi</li>
<li> Segmentlerin Enerjilerinin ve Otokorelasyonlarının Bulunması</li>
<li> Sonuç</li>
</ul>
<p><span id="more-42"></span></p>
<p><strong>Değişkenlerin Tanımlanması</strong></p>
<p>Programda kullanılacak değişkenler hız kazanmak için önceden tanımlanıyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">xseg_son=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
mm_son=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
cc=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
energy=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
pitch=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
voiced=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;
unvoiced=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>;</pre></div></div>

<p>İşlenecek Sinyalin Matlab Ortamına Alınması<br />
normal_female.wav dosyası x değişkenine atiliyor. Okunan sinyalin sample frekansı fs değişkeninde tutuluyor. x değişkenine atanmış olan sinyal plot ediliyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #080;">&#91;</span>x,fs<span style="color: #080;">&#93;</span>=<span style="color: #0000FF;">wavread</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'normal_female'</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">close</span> <span style="color: #0000FF;">all</span>
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Okunan Sinyal'</span><span style="color: #080;">&#41;</span>;</pre></div></div>

<div id="attachment_39" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2007/06/odevv_01.png"><img class="size-medium wp-image-39 colorbox-42" title="pitch1" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/06/odevv_01-300x225.png" alt="Okunan Sinyal" width="300" height="225" /></a><p class="wp-caption-text">Okunan Sinyal</p></div>
<p><strong>Sinyalden DC Bileşenlerin Atılması</strong></p>
<p>Sinyalin mean değeri kendinden çıkarılarak DC bileşenler atiliyor. Sonuç X değişkenine atılarak çizdiriliyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">X=x-<span style="color: #0000FF;">mean</span><span style="color: #080;">&#40;</span>x<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>X<span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'DC Bileseni Atilmis Sinyal Sinyal'</span><span style="color: #080;">&#41;</span>;</pre></div></div>

<div id="attachment_40" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2007/06/odevv_02.png"><img class="size-medium wp-image-40 colorbox-42" title="pitch2" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/06/odevv_02-300x225.png" alt="DC Bileseni Atilmis Sinyal" width="300" height="225" /></a><p class="wp-caption-text">DC Bileseni Atilmis Sinyal</p></div>
<p><strong>Segmentasyonda Kullanılacak Değişkenlerin Belirlenmesi</strong></p>
<p>Bu kısımda segmentasyon işleminde kullanılacak parametreler belirlenip ardından buffer komutu ile belirlenen block değerlerinde segmentlere bölme işlemi gerçekleştiriliyor. Window&#8217;lar overlap miktarı kadar çakışık olarak bölünmektedir. Ardından elde edilen window&#8217;lar hamming window ile çarpılarak segmentler elde ediliyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">block=<span style="color: #33f;">30</span>*fs/<span style="color: #33f;">1000</span>; <span style="color: #228B22;">% Segmentlerin block uzunluğunun okunan sinyalin sample frekansından bulunması</span>
overlap=<span style="color: #33f;">10</span>*fs/<span style="color: #33f;">1000</span>;<span style="color: #228B22;">% Overlap miktarının bulunması.</span>
xson=buffer<span style="color: #080;">&#40;</span>X,block,overlap<span style="color: #080;">&#41;</span>;<span style="color: #228B22;">% Segmentasyon yapılıyor.</span>
xson=xson.*<span style="color: #0000FF;">repmat</span><span style="color: #080;">&#40;</span><span style="color: #080;">&#40;</span>hamming<span style="color: #080;">&#40;</span>block<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>,<span style="color: #33f;">1</span>,<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>xson<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;<span style="color: #228B22;">% Hamming Code İle Çarpım.</span></pre></div></div>

<p><strong>Silence Analizi İçin Gerekli Değişkenlerin Bulunması</strong></p>
<p>Sinyalin sesli/sessiz kısımlarının analizi için gerekli bazı değişkenlerin tanımlamaları yapılıyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">Maximum=<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>X<span style="color: #080;">&#41;</span>;<span style="color: #228B22;">% DC bileşenleri atılmış sinyalin maximum değeri bulunuyor.(Global Maximum)</span>
maxy=<span style="color: #080;">&#40;</span>Maximum*<span style="color: #33f;">0.05</span><span style="color: #080;">&#41;</span>;<span style="color: #228B22;">% Silence için threshold değeri tanımlanıyor</span>
sinyal_uz=<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>xson<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% xson sinyalinin boyutları [1500,300].Burada sinyal_uz 300 değerini alıyor.</span></pre></div></div>

<p><strong>Silence Olan Segmentlerin Atılması</strong></p>
<p>Aşağıdaki döngüde silence olmayan segmentler hesaplanıyor. Her segmentin maximum değeri xseg_max değişkenine atanıyor. Bu değişken de threshold değerimiz olan maxy ile karşılaştırılıyor. Silence olmayan bir değer bulunduğunda ise z değeri 1 arttırılıyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">z=<span style="color: #33f;">1</span>;<span style="color: #228B22;">% Silence olmayan segmentlerin sayısını z verecek</span>
<span style="color: #0000FF;">for</span> c=<span style="color: #33f;">1</span>:<span style="color: #080;">&#40;</span>sinyal_uz<span style="color: #080;">&#41;</span>, <span style="color: #228B22;">% sinyal_uz=300.% Her segmentin maximumu xseg_max a atanıyor.</span>
<span style="color: #228B22;">% Bir sonraki adımda global max. ile karşılaştırılacak.</span>
xseg_max=<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>xson<span style="color: #080;">&#40;</span>:,c<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">if</span> xseg_max &amp;gt;maxy <span style="color: #228B22;">% Segmentin maximumu global maximum ile karşılaştırılıyor.</span>
xseg_son<span style="color: #080;">&#40;</span>:,z<span style="color: #080;">&#41;</span>=xson<span style="color: #080;">&#40;</span>:,c<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% Silencelardan arındırılmış yeni bir &quot;xseg_son&quot; sinyali oluşturuluyor.</span>
z=z+<span style="color: #33f;">1</span>; <span style="color: #228B22;">% Silence olmayan her segment için z 1 arttırılıyor.</span>
<span style="color: #0000FF;">else</span>
<span style="color: #0000FF;">end</span> <span style="color: #228B22;">% if</span>
<span style="color: #0000FF;">end</span> <span style="color: #228B22;">% for</span>
&nbsp;
xx=xseg_son<span style="color: #080;">&#40;</span>:,<span style="color: #33f;">1</span>:<span style="color: #080;">&#40;</span>z-<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% xseg_son xx e atandı.</span>
<span style="color: #0000FF;">plot</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span>:<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #0000FF;">title</span><span style="color: #080;">&#40;</span><span style="color:#A020F0;">'Silence Atilmis Sinyal'</span><span style="color: #080;">&#41;</span>;</pre></div></div>

<div id="attachment_41" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.tarikzengin.com/blog/wp-content/uploads/2007/06/odevv_03.png"><img class="size-medium wp-image-41 colorbox-42" title="pitch3" src="http://www.tarikzengin.com/blog/wp-content/uploads/2007/06/odevv_03-300x225.png" alt="Silence Atilmis Sinyal" width="300" height="225" /></a><p class="wp-caption-text">Silence Atilmis Sinyal</p></div>
<p><strong>Clipping Level Parametrelerinin Elde Edilmesi</strong></p>
<p>Aşağıdaki döngüde her segmentin ilk ve son üçte birlik kısmının maximumu bulunup karşılaştırılıyor. Bu karşılaştırılan iki değerden de küçük olanı mm değişkenine atanıyor. Clipping Level ı tanımlamak amacıyla elde edilen değer de 0,68 ile çarpılıyor. Segmentin bu değerden büyük olan elemanlarından bu threshold değeri çıkarılıyor. Küçük olan değerler ise doğrudan 0&#8242;a yuvarlanıyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;"><span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">i</span></span>=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>, <span style="color: #228B22;">%i=1:300</span>
m1=<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">abs</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>:<span style="color: #33f;">500</span>,<span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% xx sinyalinin ilk 1/3 kısmının maximum elemanı bulundu</span>
m2=<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">abs</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span><span style="color: #33f;">1001</span>:<span style="color: #33f;">1500</span>,<span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% xx sinyalinin son 1/3 kısmının maximum elemanı bulundu</span>
mm=<span style="color: #0000FF;">min</span><span style="color: #080;">&#40;</span>m1,m2<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% Bu iki maximumdan hangisinin daha küçük olduğu belirlendi</span>
mm_son<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>=mm*<span style="color: #33f;">0.68</span>; <span style="color: #228B22;">% Yukarıdaki satırda elde edilen değer 0.68 ile çarpılarak &quot;clipping level&quot; elde edildi</span>
&nbsp;
<span style="color: #0000FF;">for</span> <span style="color: #0000FF;"><span style="color: #33f;">j</span></span>=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span>:,<span style="color: #33f;">1</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>, <span style="color: #228B22;">% length(xx(:,1))=1500</span>
<span style="color: #0000FF;">if</span> <span style="color: #0000FF;">abs</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">j</span></span>,<span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>&amp;gt;mm_son<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span> <span style="color: #228B22;">% Clipping level ile karşılaştırma yapılıyor</span>
cc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">j</span></span>,<span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>=<span style="color: #0000FF;">sign</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">j</span></span>,<span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>*<span style="color: #080;">&#40;</span><span style="color: #080;">&#40;</span><span style="color: #0000FF;">abs</span><span style="color: #080;">&#40;</span>xx<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">j</span></span>,<span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>-<span style="color: #080;">&#40;</span>mm_son<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% Clipping leveldan büyük olan bileşenlerden clipping level çıkarıldı</span>
<span style="color: #0000FF;">else</span>
cc<span style="color: #080;">&#40;</span><span style="color: #0000FF;"><span style="color: #33f;">j</span></span>,<span style="color: #0000FF;"><span style="color: #33f;">i</span></span><span style="color: #080;">&#41;</span>=<span style="color: #33f;">0</span>;  <span style="color: #228B22;">% Küçük olan bileşenler ise 0 a çekildi</span>
<span style="color: #0000FF;">end</span>  <span style="color: #228B22;">% if koşulu sona erdiriliyor</span>
<span style="color: #0000FF;">end</span>  <span style="color: #228B22;">% 2.&quot;for&quot; döngüsü sonu</span>
<span style="color: #0000FF;">end</span>  <span style="color: #228B22;">% 1.&quot;for&quot; döngüsü sonu</span></pre></div></div>

<p><strong>Segmentlerin Enerjilerinin Bulunması</strong></p>
<p>Yukarıdaki döngü sonunda elde edilen cc matrisinin boyutları [1500,300]. Aşağıdaki döngüde ise her bir segment için energy hesaplanıyor. Bunun için sinyalin normunun karesi her bir kolonu için hesaplanıyor. xcorr komutu ile tüm sinyalin autocorrelation&#8217;i bulunuyor. Buradan 50Hz ile 400Hz arasindaki autocorrelation bileşenleri bulunuyor ve bunlara karşılık gelen pitch frekansları hesaplanıyor.</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">w=<span style="color: #33f;">1</span>; <span style="color: #228B22;">% Voiced segmentler için başlangıç ataması</span>
v=<span style="color: #33f;">1</span>; <span style="color: #228B22;">% Unvoiced sinyaller için başlangıç ataması</span>
u=<span style="color: #33f;">1</span>; <span style="color: #228B22;">% Voiced olarak düşündüğümüz bileşenlerin sayısını bu parametre gösterecek</span>
a=<span style="color: #080;">&#91;</span><span style="color: #080;">&#93;</span>; <span style="color: #228B22;">% Autocorrelation matrisi için başlangıç ataması</span>
<span style="color: #0000FF;">for</span> h=<span style="color: #33f;">1</span>:<span style="color: #0000FF;">length</span><span style="color: #080;">&#40;</span>cc<span style="color: #080;">&#40;</span><span style="color: #33f;">1</span>,:<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>,  <span style="color: #228B22;">% cc nin kolon sayısı=300</span>
energy<span style="color: #080;">&#40;</span>h<span style="color: #080;">&#41;</span>=<span style="color: #0000FF;">norm</span><span style="color: #080;">&#40;</span>cc<span style="color: #080;">&#40;</span>:,h<span style="color: #080;">&#41;</span>,<span style="color: #33f;">2</span><span style="color: #080;">&#41;</span>^<span style="color: #33f;">2</span>; <span style="color: #228B22;">% Her segment için enerji hesaplanıyor</span>
a<span style="color: #080;">&#40;</span>:,h<span style="color: #080;">&#41;</span>=xcorr<span style="color: #080;">&#40;</span>cc<span style="color: #080;">&#40;</span>:,h<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;   <span style="color: #228B22;">% İlk başta bütün cc sinyalinin autocorrelation u bulunuyor</span>
&nbsp;
<span style="color: #228B22;">% 50 Hz-400Hz arasındaki autocorrelation fonksiyonu değerlerini bulabilmek için 50 Hz ve 400 Hz frekanslarına karşılık gelen pitch  frequency değerlerinin indekslerini alıyoruz.</span>
alt_sinir=<span style="color: #0000FF;">floor</span><span style="color: #080;">&#40;</span>fs/<span style="color: #33f;">400</span><span style="color: #080;">&#41;</span>;
ust_sinir=<span style="color: #0000FF;">floor</span><span style="color: #080;">&#40;</span>fs/<span style="color: #33f;">50</span><span style="color: #080;">&#41;</span>;
Rxx=<span style="color: #0000FF;">abs</span><span style="color: #080;">&#40;</span>a<span style="color: #080;">&#40;</span><span style="color: #080;">&#40;</span>block+alt_sinir:block+ust_sinir<span style="color: #080;">&#41;</span>,h<span style="color: #080;">&#41;</span><span style="color: #080;">&#41;</span>;
<span style="color: #080;">&#91;</span>k l<span style="color: #080;">&#93;</span>=<span style="color: #0000FF;">max</span><span style="color: #080;">&#40;</span>Rxx<span style="color: #080;">&#41;</span>;   <span style="color: #228B22;">% Aldığımız aralıktaki en büyük sayının yerini belirliyoruz</span>
l=l+alt_sinir;
pitch<span style="color: #080;">&#40;</span>h<span style="color: #080;">&#41;</span>=fs/l;  <span style="color: #228B22;">% Pitch Frequnecy hesaplanıyor </span>
&nbsp;
<span style="color: #228B22;">% Segmentin sesli/sessiz oldugunu bulabilmek için autocorrelation'in 0.4*energy'den</span>
<span style="color: #228B22;">% büyük olup olmadigi karsilastiriliyor. Eger büyükse segment seslidir ve voiced</span>
<span style="color: #228B22;">% matrisine atiliyor, eger küçükse unvoiced matrisine atiliyor. Voiced ve unvoiced</span>
<span style="color: #228B22;">% segment sayisi w ve v degiskenlerinde tutuluyor.</span>
&nbsp;
<span style="color: #0000FF;">if</span> k &amp;gt; <span style="color: #33f;">0.4</span>*energy<span style="color: #080;">&#40;</span>h<span style="color: #080;">&#41;</span> <span style="color: #228B22;">% En büyük değer 0.4*energy ile karşılaştırılıyor</span>
voiced<span style="color: #080;">&#40;</span>:,w<span style="color: #080;">&#41;</span>=cc<span style="color: #080;">&#40;</span>:,h<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% Şart sağlanırsa voiced sinyaline atılıyor</span>
w=w+<span style="color: #33f;">1</span>; <span style="color: #228B22;">% Koşul sağlanırsa voiced segment sayısı arttırılır.</span>
<span style="color: #0000FF;">else</span>
unvoiced<span style="color: #080;">&#40;</span>:,v<span style="color: #080;">&#41;</span>=cc<span style="color: #080;">&#40;</span>:,h<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% Şart sağlanmazsa unvoiced sinyali oluşturuluyor</span>
v=v+<span style="color: #33f;">1</span>; <span style="color: #228B22;">% Unvoiced sinyal segmentleri 1 arttılır.</span>
<span style="color: #0000FF;">end</span>
<span style="color: #0000FF;">end</span> <span style="color: #228B22;">% 1. &quot;for&quot; döngüsü sonu</span></pre></div></div>

<p><strong>Sonuç</strong></p>
<p>En son kısımda ise sesli sinyalinin ortalaması alınıyor</p>

<div class="wp_syntax"><div class="code"><pre class="matlab" style="font-family:monospace;">sesli_ort=<span style="color: #0000FF;">mean</span><span style="color: #080;">&#40;</span>pitch<span style="color: #080;">&#41;</span>; <span style="color: #228B22;">% Voiced segmentlerin ortalaması</span>
sesli_ort
&nbsp;
sesli_ort=
<span style="color: #33f;">232.8431</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://tarikzengin.com/pitch-frequency-estimation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

