keytransposition01.html

来自「一个关于数据聚类和模式识别的程序,在生物化学,化学中因该都可以用到.希望对大家有」· HTML 代码 · 共 79 行

HTML
79
字号
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"                "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head>  <title>Description of keyTransposition01</title>  <meta name="keywords" content="keyTransposition01">  <meta name="description" content="This script demonstrate the use of Picard iteration on finding the optimal pitch shift for DTW in melody recognition">  <meta http-equiv="Content-Type" content="text/html; charset=big5">  <meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">  <meta name="robots" content="index, follow">  <link type="text/css" rel="stylesheet" href="../m2html.css"></head><body><a name="_top"></a><div><a href="../index.html">Home</a> &gt;  <a href="index.html">dcpr</a> &gt; keyTransposition01.m</div><!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png">&nbsp;Master index</a></td><td align="right"><a href="index.html">Index for dcpr&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>--><h1>keyTransposition01</h1><h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>This script demonstrate the use of Picard iteration on finding the optimal pitch shift for DTW in melody recognition</strong></div><h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>This is a script file. </strong></div><h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre class="comment"> This script demonstrate the use of Picard iteration on finding the optimal pitch shift for DTW in melody recognition</pre></div><!-- crossreference --><h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>This function calls:<ul style="list-style-image:url(../matlabicon.gif)"><li><a href="dtwPlot.html" class="code" title="function dtwplot(vec1, vec2, DTWpath, DTWpath2)">dtwPlot</a>	DTWPLOT Plot the result of DTW of two pitch/MFCC vectors</li></ul>This function is called by:<ul style="list-style-image:url(../matlabicon.gif)"></ul><!-- crossreference --><h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre>0001 <span class="comment">% This script demonstrate the use of Picard iteration on finding the optimal pitch shift for DTW in melody recognition</span>0002 0003 <span class="comment">% inputPitch: input pitch vector</span>0004 inputPitch=[48.044247 48.917323 49.836778 50.154445 50.478049 50.807818 51.143991 51.486821 51.486821 51.486821 51.143991 50.154445 50.154445 50.154445 49.218415 51.143991 51.143991 50.807818 49.524836 49.524836 49.524836 49.524836 51.143991 51.143991 51.143991 51.486821 51.836577 50.807818 51.143991 52.558029 51.486821 51.486821 51.486821 51.143991 51.143991 51.143991 51.143991 51.143991 51.143991 51.143991 51.143991 51.143991 49.218415 50.807818 50.807818 50.154445 50.478049 48.044247 49.524836 52.193545 51.486821 51.486821 51.143991 50.807818 51.486821 51.486821 51.486821 51.486821 51.486821 55.788268 55.349958 54.922471 54.922471 55.349958 55.349958 55.349958 55.349958 55.349958 55.349958 55.349958 55.349958 53.699915 58.163541 59.213095 59.762739 59.762739 59.762739 59.762739 58.163541 57.661699 58.163541 58.680365 58.680365 58.680365 58.163541 55.788268 54.505286 55.349958 55.788268 55.788268 55.788268 54.922471 54.505286 56.237965 55.349958 55.349958 55.349958 55.349958 54.505286 54.505286 55.349958 48.917323 50.478049 50.807818 51.143991 51.143991 51.143991 50.807818 50.807818 50.478049 50.807818 51.486821 51.486821 51.486821 51.486821 51.486821 51.486821 52.558029 52.558029 52.558029 52.558029 52.193545 51.836577 52.193545 53.310858 53.310858 53.310858 52.930351 52.930351 53.310858 52.930351 52.558029 52.193545 52.930351 53.310858 52.930351 51.836577 52.558029 53.699915 52.930351 52.930351 52.558029 52.930351 52.930351 52.558029 52.558029 52.558029 53.310858 53.310858 53.310858 53.310858 52.930351 52.930351 52.930351 52.558029 52.930351 52.930351 52.930351 52.930351 52.930351 52.930351 52.930351 53.310858 53.310858 53.310858 52.193545 52.193545 52.193545 54.097918 52.930351 52.930351 52.930351 52.930351 52.930351 51.143991 51.143991 51.143991 48.917323 49.524836 49.524836 49.836778 49.524836 48.917323 49.524836 49.218415 48.330408 48.330408 48.330408 48.330408 48.330408 49.524836 49.836778 53.310858 53.310858 53.310858 52.930351 52.930351 52.930351 53.310858 52.930351 52.930351 52.558029 52.558029 51.143991 52.930351 49.218415 49.836778 50.154445 49.836778 49.524836 48.621378 48.621378 48.621378 49.836778 49.836778 49.836778 49.836778 46.680365 46.680365 46.680365 46.163541 45.661699 45.661699 45.910801 46.163541 46.163541 46.163541 46.163541 46.163541 46.163541 46.163541 46.163541 46.163541 46.163541 46.163541 46.163541 50.807818 51.486821 51.486821 51.143991];0005 <span class="comment">% dbPitch: database pitch vector</span>0006 dbPitch =[60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 64 64 64 64 64 64 64 64 64 64 64 64 64 67 67 67 67 67 67 67 67 67 67 67 67 64 64 64 64 64 64 64 64 64 64 64 64 64 60 60 60 60 60 60 60 60 60 60 60 60 60 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 59 59 59 59 59 59 59 59 59 59 59 59 59 62 62 62 62 62 62 62 62 62 62 62 62 59 59 59 59 59 59 59 59 59 59 59 59 59 55 55 55 55 55 55 55 55 55 55 55 55 55 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 64 64 64 64 64 64 64 64 64 64 64 64 64 67 67 67 67 67 67 67 67 67 67 67 67 64 64 64 64 64 64 64 64 64 64 64 64 64 60 60 60 60 60 60 60 60 60 60 60 60 60 67 67 67 67 67 67 67 67 67 67 67 67 65 65 65 65 65 65 65 65 65 65 65 65 65 64 64 64 64 64 64 64 64 64 64 64 64 62 62 62 62 62 62 62 62 62 62 62 62 62 60 60 60 60 60 60 60 60 60 60 60 60 60];0007 0008 n=length(inputPitch);0009 inputPitch=inputPitch-median(inputPitch)+median(dbPitch(1:n))-2;    <span class="comment">% Shift input pitch to have the same mean</span>0010 0011 anchorBeginning=1;    <span class="comment">% Anchor beginning</span>0012 anchorEnd=0;        <span class="comment">% Anchor end</span>0013 maxIterationNum=20;    <span class="comment">% Max iteration count</span>0014 dtwDist=inf*ones(1, maxIterationNum);    <span class="comment">% DTW distances for different pitch shifts</span>0015 endPos=zeros(1, maxIterationNum);0016 pitchShift=zeros(1, maxIterationNum);0017 <span class="keyword">for</span> i=1:maxIterationNum0018     [dtwDist(i), dtwPath, dtwTable] = dtw1mex(inputPitch, dbPitch, anchorBeginning, anchorEnd);0019     endPos(i)=dtwPath(2,end);0020     pitchShift(i)=median(dbPitch(dtwPath(2, :))-inputPitch(dtwPath(1, :)));0021     <span class="keyword">if</span> pitchShift(i)==00022         iterationNum=i;0023         <span class="keyword">break</span>;0024     <span class="keyword">end</span>0025     inputPitch=inputPitch+pitchShift(i);0026 <span class="keyword">end</span>0027 subplot(3,1,1); plot(dtwDist(1:iterationNum), <span class="string">'.-'</span>); ylabel(<span class="string">'dtwDist'</span>);0028 subplot(3,1,2); plot(endPos(1:iterationNum), <span class="string">'.-'</span>); ylabel(<span class="string">'endPos'</span>);0029 subplot(3,1,3); plot(pitchShift(1:iterationNum), <span class="string">'.-'</span>); ylabel(<span class="string">'pitchShift'</span>);0030 xlabel(<span class="string">'Number of iterations'</span>);0031 figure; <a href="dtwPlot.html" class="code" title="function dtwplot(vec1, vec2, DTWpath, DTWpath2)">dtwPlot</a>(inputPitch, dbPitch, dtwPath);0032 fprintf(<span class="string">'Min. DTW distance = %f\n'</span>, min(dtwDist(1:iterationNum)));0033 fprintf(<span class="string">'Optimum pitch shift = %f\n'</span>, sum(pitchShift));</pre></div><hr><address>Generated on Thu 30-Oct-2008 12:53:56 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address></body></html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?