采用數字信號處理的優勢
前面比較了數字信號相對于模擬信號的優點,如噪聲不積累;差錯可以控制;易于加密,安全性好;便于實現信息融合;便于采用大規模集成電路實現,等等。此外,采用數字信號處理還有一些重要的優勢,即精度高、靈活性強、性能好和應用廣等。
①數字信號系統相對模擬信號系統更容易實現高精度,并且并且較為穩定,因為數字系統不容易受外界溫濕度等的影響,而模擬系統的工作狀態常常受到外界環境的影響,發生參數的改變。
②數字信號系統處理更加靈活。模擬系統的硬件結構一旦形成,不容易添加、刪除或者更改元器件,而數字系統很容易通過修改參數實現所需要的功能。當信號處理既可以用硬件實現、也可以用軟件實現時,它們各有其優缺點:硬件實現速度快,但是不靈活;軟件速度較慢,但是靈活性好。比如,手機的語音編解碼將復雜的算法用集成電路實現,處理速度很快,因而能實現實時通信。
③性能好。數字系統可以實現嚴格的線性相位,這在某些對相位要求較高的場合如圖像傳輸非常有利,因為相位的非線性會導致圖像的畸變;數字系統可以方便地存儲數據,因而可以實現非因果系統;數字系統可以利用信息論理論和語音、圖像壓縮理論,對數據進行壓縮,大大降低數據傳輸率,壓縮的依據有兩個:一是熵壓縮,利用空間和時間冗余度,二是利用人耳或人眼的感知特性。數字系統可以實現很精細的譜分析,而模擬系統則要粗糙得多,比如數字系統的譜分析精度可以達到千分之一赫茲,而模擬系統只能達到10赫茲。
④數字系統利用強大的儲存和運算能力實現多維信號處理,如多維濾波、多維譜分析等,因而應用更加廣泛。
教材中介紹了大量數字信號處理的應用,這里再介紹兩個新穎的例子。將人體切片進行數字化,可以對人體進行三維重建,在醫學教育和臨床上都得到應用。對文物進行數字化,可以實現三維數字博物館,更加方便游客欣賞,也方便文物的復制。
學好數字信號處理的三大訣竅之一——運用MATLAB
江志紅在《深入淺出數字信號處理》中提出,理解數字信號處理有三把“萬能”的鑰匙,即①時域與頻域的相互切換;②向量;③MATLAB軟件。對這種提法,本人深以為然。下面首先談MATLAB在數字信號處理中的應用。
很多學生一旦接觸數字信號處理這門課,就被繁瑣的公式推導嚇倒了。高等數學固然公式很多,而數字信號處理公式之多,比高等數學有過之而無及,況且這些公式大都有一定的物理意義,要把公式及其物理意義緊密結合起來,因此就更加困難了。探索這門課程的更加友好的教學方法和更加有效的學習方法,顯得迫在眉睫。將理論和實踐加以結合,利用MATLAB實現各種理論和算法,運用于解決實際問題,是學好數字信號處理的一個訣竅。
MATLAB是一個面向科學計算與工程數值分析的軟件,具有強大的仿真、計算和可視化能力。由于它是一種高級語言,因而編程非常簡單,易學易用。將數字信號處理的學習和MATLAB工具緊密結合起來,學習才不會枯燥,因為繁瑣的公式或算法都可以得到實在的結果,這些結果甚至是可以聽到(語音、音頻)或者看到(圖像、頻率譜、相位譜)的,那么必然加深對基本理論的理解。數字信號處理是一門工科性質非常強的課程,僅僅學一堆理論和公式而不能實現它,和學純數學有什么區別呢?況且數學課程也在改革中,也在運用MATHEMATICA和MATLAB等工具進行計算、直觀化,解決實際問題。
大多數字信號處理課程教學是把理論學習和MATLAB分開的,以理論課的學習為主,中間穿插一些實驗或者課程設計環節。而我們會嘗試將MATLAB貫穿于整個數字信號處理課程的學習,采取理論密切聯系實際的方法。一個不那么直觀的理論或公式,我們都試圖將其直觀起來,用MATLAB運行得到實際結果來說明問題。理論和實驗是不分主次的,理論學得好的可以多花點時間做實驗,而實驗做得好的也可以多花點時間學習理論。
下面以圓周率的仿真計算為例,說明MATLAB的強大威力。下面是用面積法計算圓周率的仿真程序,整個程序只有一行:
N = 10000000; pi = 4*length(find(sum(rand(2, N).^2)《 1))/N
把上述命令輸入MATLAB的命令窗口運行,即得到圓周率的近似值3.1417(重復試驗可以得到不同的結果,但都是圍繞3.1416而變動的,偶然性中包含著必然性)。上述各個命令的含義可以在以后的學習中逐步熟悉。
總之,學習數字信號處理這門課,一定要密切結合MATLAB,做到理論聯系實際,理性認識和感性認識相結合。下面舉一個有趣的例子來結束本節。
例1 有高矮各不相同的100名同學,隨機地排成一個10×10的方陣。每行取最高的一個同學,一共10個高個子,記為集合T;每列取最矮的一個同學,一共10個矮個子,記為集合S。問題:(1) T中最矮的同學(記為T[S])和S中最高的同學(記為S[T])相比誰更高?(2) 如果T[S]和S[T]一樣高(即為同一個人),求其概率為多少?
分四種情況討論:T[S]和S[T]既不在同一行,也不在同一列;T[S]和S[T]在同一行;T[S]和S[T]在同一列;T[S]和S[T]為同一個人。容易知道,前三種情形,都是高個子中最矮的比矮個子中最高的要高,那么在100個人隨機排列的情況下,T[S]和S[T]為同一個人的概率多大呢?只要做一下試驗,只要試驗的次數足夠高,就可以得到充分準確的概率。如下代碼進行10,000,000次試驗,統計T[S]和S[T]為同一個人的頻率。
clc,clear all;
tic
jj =0;
for ii= 1:10000000
A = randperm(100);
B = reshape(A, 10, 10);
C1 = max(B‘);
D1 = min(C1);
C2 = min(B);
D2 = max(C2);
if (D1-D2) 《= eps
jj = jj + 1;
end
end
rate =jj/10000000
time =toc
在Intel Celeron CPU G1820(2.70GHz)上運行結果為:
rate =
1.0990e-004
time =
169.1524
即T[S]和S[T]為同一個人的概率約為萬分之一點一,在任一次試驗中,幾乎可以肯定地說,高個子中的矮個子比矮個子中的高個子高。同時,10,000,000次重復試驗所花的機器時間約為169秒,即不到3分鐘。
原文標題:學習數字信號處理的訣竅:運用MATLAB
文章出處:【微信公眾號:數字信號處理輔導】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
數字信號
+關注
關注
2文章
969瀏覽量
47543
原文標題:學習數字信號處理的訣竅:運用MATLAB
文章出處:【微信號:digital_signals,微信公眾號:數字信號處理輔導】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論