導航:首頁 > 源碼編譯 > dtw演算法代碼老外寫的

dtw演算法代碼老外寫的

發布時間:2022-04-29 05:06:40

❶ DTW演算法,我在網上下載了matlab的DTW(動態時間規整)演算法的程序,裡面計算兩個不同維度向量的匹配距離。

你的程序沒貼出來啊?
如果受字數限制,可以傳到網盤,再把鏈接貼出來。

❷ matlab匹配問題 dtw演算法

我看了一下你的鏈接和程序.
這是你沒定義dtwOptSet,當然dtw和dtwOptSet都是作者自定義的函數,不在matlab的標准庫里,這個圖也是明顯用了3個subplot畫的
如果你想運行這個,請去作者推薦的
http://mirlab.org/jang/books/dcpr/introMatlabProgram.asp?title=1-2%20Example%20Programs%20(%A6p%A6%F3%A8%FA%B1o%B5{%A6%A1%BDX)
下載example就可以了.

❸ 【求助】關於《MATLAB擴展編程》中CH13 的例子程序 dtw

wavread改成readwav,前提是你安了voicebox的包

❹ 遺傳演算法實現數字水印用MATLAB,程序怎麼寫啊可以把我的積分都給了你

一、嵌入水印信息的MATLAB程序
首先讀入原始圖象並設置參數,然後嵌入水印信息,程序代碼如下:
clear
%
%讀入原圖象
trueImage=imread('C:\Documents and Settings\ks001\My Documents\My Pictures\lean.tif');
alfa=.1;
LENGTH=2500;
subplot(2,2,1);
imshow(trueImage);
title('原始圖象');
%
%對原圖象進行DCT變換
dctF1=dct2('C:\Documents and Settings\ks001\My Documents\My Pictures\lean.tif');
subplot(2,2,2);
imshow(log(abs(dctF1)),[ ]);
title('DCT cofficient matrix');
[m,n]=size(dctF1);
%
%產生水印序列並對其排序
radon('right',10);
watermark1=radon(LENGTH,1);
subplot(2,2,3);
title('watermark seqence')
[Y0,I0]=sort(watermark1);
%
%找出水印嵌入位置(幅值較大的n個頻域成分)
A=dctF1(:);
[Y1,I1]=sort(A);
x=m*n;
k=LENGTH;
M=zeros(x,1);
%
%修改幅值較大的n個頻域成分的幅值,嵌入水印(因為兩個問題不同,所以有兩個注釋符)
for i=1:x
if k>=1
M(x)=Y1(x)*(1+alfa*Y0(k));
k=k-1;
else
M(x)=Y1(x);
end
x=x-1;
end
N=zeros(x,1);
x=m*n;
for i=1:x
N(I1(i))=M(i);
end
a=1;
for j=1:n
for i=1:m
dctF2(i,j)=N(a);
a=a+1;
end
end
%
%DCT反變換,得到嵌入水印的圖象
idctF1=idct2(dctF2);
subplot(2,2,4);
imshow(idctF1,[ ]);
title('嵌入水印後的圖象');
end

二、提取恢復水印信息的MATLAB程序
水印提取過程是水印嵌入過程的逆過程,相對嵌入過程來說比較復雜,難度較大,下面是水印提取檢測的MATLAB程序代碼:
function watermark_detect(image,Y1,I0,waterMark1)
%image:嵌入水印的圖象
%Y1:原始圖象的序列排序
%I0:原始水印的序列排序
%waterMark1:原始水印序列
%
%對嵌入水印圖象進行DCT變化
dctW1=dct2(image);
%
%找出幅值較大的系數
B=dtW1(:);
[Y1,I2]=sort(B);
[m1,n1]=size(dctW1);
y=m1*n1;
k=length(waterMark1);
N0=zeros(k,1);
%
%提取水印序列
while k>=1
N0(k)=(Y2(y)-Y1(y))/alfa/Y1(y);
k=k-1;
y=y-1;
end
k=length(waterMark1);
waterMark2=zeros(k,1);
for i=1:k
waterMark2(I0(i))=N0(i);
end
%
%選取50個測試序列,其中第10個為提取出的水印
figure;
for i=1;50
if i==10;
waterMark=waterMark2;
else
waterMark=rand(k,1);
end
%計算各個序列與原來水印序列的相關值
c=waterMark'*waterMark1/sqrt(waterMark'*waterMark);
stem(i,c);
hold on;
end
%

三、接下來對嵌入水印的圖象進行不同的攻擊,用以測試水印的魯棒性。
程序的目的和程序代碼如下:
%
%攻擊實驗
disp('input you choice according to the following
image processing operation:');
disp('0--exit');
disp('1--smoothing patterns');
%添加噪音
disp('2--adding uniorm noise 添加噪音');
%濾波
disp('3--adding filter [10 10] 濾波');
%剪切
disp('4--cutting part of the image 剪切');
%壓縮
disp('5--10 quality JPEG compressing 壓縮');
%旋轉45度
disp('6--rotate 45 旋轉');
%
d=input('please input you choice(請輸入您的選擇):');
while d~=0
switch d
case 1
watermark_detect(idctF1,Y1,I0,waterMark1);
case 2
WImage2=idctF1;
noise0=10*rand(size(WImage2));
WImage2=WImage2+noise0;
figure;
imshow(WImage2,[ ]);
title('adding uniform noise 添加噪音');
watemark_detect(WImage2,Y1,I0,waterMark1);
case 3
WImage3=idctF1;
H=fspcial('gaussian高斯',[10,10],5);
WImage3=imfilter(WImage3,H);
figure;
imshow(WImage3,[ ]);
title(through filter [10,10] 濾波');
watemark_detect(WImage3,Y1,I0,waterMark1);
case 4
WImage4=idctF1; WImage4(1:128,1;128)=256;
figure;
imshow(WImage4);
title('cutting part of the image 剪切');
watemark_detect(WImage4,Y1,I0,waterMark1);
case 5
WImage5=idctF1;
WImage5=im2double(WImage5);
cnum=10;
dctm=dctmtx(8);
p1=dctm;
p2=dctm.';
imageDCT=blkproc(WImage5,[8,8],'p1*p2*x',dctm,dctm.');
DCTvar=im2col(imageDCT,[8,8],'distinct').';
n=size(DCTvar,1);
DCTvar=(sum(DCTvar.*DCTvar)-(sum(DCTvar)/n).^2)/n;
[m,order]=sort(DCTvar);
cnum=64-cnum;
mask=ones(8,8);
mask(order(1:cnum))=zeros(1,cnum);
im88=zeros(9,9);
im88(1:8,1:8)=mask;
im128128=kron(im88(1:8,1:8),ones(16));
dctm=dctmtx(8);
p1=dctm.';
p2=mask(1;8,1:8);
p3=dctm;
Wimage5=bikproc(imageDCT,[8,8],'p1*(x.8p2)*p3',dctm.',mask(1:8,1:8),dctm);
figure;
imshow(Wimage5);
title('JPEG Image 壓縮');
watemark_detect(WImage5,Y1,I0,waterMark1);
case 6 WImage6=idctF1;
WImage6=imrotate(WImage6,45,'bilinear','corp');
figure;
imshow(Wimage6);
title('rotate 45 旋轉');
watemark_detect(WImage6,Y1,I0,waterMark1);
case 0
break;
otherwise
error('you have a valid value(您的輸入錯誤)');
end
d=input('please input you choice(請輸入您的選擇):');
end
%結束

❺ 基於單片機的特定語音識別的DTW演算法 怎樣用C語言實現 跪求!

建議,非特定人語音識別晶元 LD3320,
或者索性 思索語音識別模塊V280,已經開發完畢,直接可以用了。

❻ matlab中實現DTW演算法,語句中的t,r代表什麼

t和r是當你引用這個dist函數的時候,傳的參數

❼ dtw演算法在語音識別系統的應用,

DTW是動態時間規整演算法,在語音識別系統中通常用於特定人識別,特定人識別即A用戶使用這個語音識別系統,B用戶使用就會出現語音識別出錯或無法識別的現象。
DTW在語音識別系統中,是一個需要用戶事先訓練的系統。從操作方面上,首先需要訓練,對需要控制的命令錄制對應的語音;使用時只要說出與訓練時同樣的語音命令,即可出現識別結果,實現聲控。

DTW在語音識別系統中充當數據匹配比對模塊。語音識別系統首先採集用戶的語音,經過端點檢測,找出用戶的有效語音而把其他非語音段給刪除;然後經過MFCC特徵提取,得到用戶聲音的特徵,最後進入DTW,進行歐式距離的比對,距離最小對應的模板,即為識別結果。

希望以上信息對你有所幫助。

❽ DTW演算法程序最終輸出的D(n,m)是一個距離還是一個矩陣

是一個方陣

❾ 我用DTW演算法識別錄制的語音後,後面我想用switch case語句調用函數來播放一個音樂文件,程序應該怎麼寫

幾乎不可能實現。播放音樂的同時,還作語音識別,根本就是給語音識別找不痛快嗎,音樂就是大幹擾源。

補充:
在 Voiceui那個公司的官網上,看到一款語音識別軟體,可以語音識別,也可以播放一些MP3。供參考。

❿ matlab中的特定人語音識別演算法DTW演算法的應用常式

語音識別原理

語音識別系統的本質就是一種模式識別系統,它也包括特徵提取、模式匹配、參考模式庫等基本單元。由於語音信號是一種典型的非平穩信號,加之呼吸氣流、外部噪音、電流干擾等使得語音信號不能直接用於提取特徵,而要進行前期的預處理。預處理過程包括預濾波、采樣和量化、分幀、加窗、預加重、端點檢測等。經過預處理的語音數據就可以進行特徵參數提取。在訓練階段,將特徵參數進行一定的處理之後,為每個詞條得到一個模型,保存為模板庫。在識別階段,語音信號經過相同的通道得到語音參數,生成測試模板,與參考模板進行匹配,將匹配分數最高的參考模板作為識別結果。後續的處理過程還可能包括更高層次的詞法、句法和文法處理等,從而最終將輸入的語音信號轉變成文本或命令。

DTW演算法原理

DTW是把時間規整和距離測度計算結合起來的一種非線性規整技術,它尋找一個規整函數im=Ф(in),將測試矢量的時間軸n非線性地映射到參考模板的時間軸m上,並使該函數滿足:

D就是處於最優時間規整情況下兩矢量的距離。由於DTW不斷地計算兩矢量的距離以尋找最優的匹配路徑,所以得到的是兩矢量匹配時累積距離最小所對應的規整函數,這就保證了它們之間存在的最大聲學相似性。

DTW演算法的實質就是運用動態規劃的思想,利用局部最佳化的處理來自動尋找一條路徑,沿著這條路徑,兩個特徵矢量之間的累積失真量最小,從而避免由於時長不同而可能引入的誤差。

閱讀全文

與dtw演算法代碼老外寫的相關的資料

熱點內容
看幀率app如何使用 瀏覽:523
從DHC伺服器租用IP地址 瀏覽:473
編譯怎麼學 瀏覽:329
數碼管顯示0到9plc編程 瀏覽:665
伺服器是為什麼服務的 瀏覽:765
java定義數據類型 瀏覽:874
安卓pdf手寫 瀏覽:427
什麼是app開發者 瀏覽:284
android鬧鍾重啟 瀏覽:101
程序員失職 瀏覽:518
在雲伺服器怎麼改密碼 瀏覽:586
伺服器pb什麼意思 瀏覽:940
51駕駛員的是什麼app 瀏覽:670
php靜態變數銷毀 瀏覽:888
編程買蘋果電腦 瀏覽:762
flac演算法 瀏覽:499
reactnative與android 瀏覽:665
程序員是干什麼的工作好嗎 瀏覽:258
kbuild編譯ko 瀏覽:471
條件編譯的宏 瀏覽:566