找別人做公司網(wǎng)站第一步做什么最新網(wǎng)站推廣方法
? ? ? ? 今天寫主要來(lái)編的程序就是咱們AD變換的兩個(gè)步驟。一個(gè)是采樣,還有一個(gè)是量化。大家可以先看看,這一過(guò)程當(dāng)中的信號(hào)是如何變化的。信號(hào)的變換圖如下。
? ? ? ? 先說(shuō)說(shuō)采樣,采樣是將連續(xù)時(shí)間信號(hào)轉(zhuǎn)換為離散時(shí)間信號(hào)的過(guò)程。在采樣過(guò)程中,連續(xù)信號(hào)在特定時(shí)間間隔(采樣間隔)內(nèi)被測(cè)量和記錄,這些時(shí)間間隔稱為采樣周期。采樣率(或采樣頻率)是指每秒鐘采樣的次數(shù),通常用赫茲(Hz)表示。采樣是數(shù)字信號(hào)處理中的一個(gè)關(guān)鍵步驟,因?yàn)樗鼘⒛M信號(hào)轉(zhuǎn)換為可以用數(shù)字設(shè)備(如計(jì)算機(jī))處理的離散信號(hào)。大家在圖上也能很明顯的看出來(lái),不知道大家還記不記得那個(gè)公式x?(nT)=x(n),每隔一定的距離在采一個(gè)值。在理想的采樣中也可以寫成模擬信號(hào)乘上沖激串,即。對(duì)應(yīng)上面的概念,這里的T就是采樣周期,fs=1/T就是采樣頻率。就先說(shuō)這么多吧,我們看程序。
%采樣信號(hào)的寫法
%奈奎斯特采樣定理的體現(xiàn),過(guò)采樣的優(yōu)勢(shì)
%注意使用“;”,抑制輸出:當(dāng)分號(hào)放在表達(dá)式后面時(shí),運(yùn)算后命令窗口中不顯示表達(dá)式的計(jì)算結(jié)果。clear all
close allf = 10;
fs = 260;%采樣信號(hào)的寫法
%第一種
t = 0:1/fs:1
signal1 = sin(2*pi*f*t);
%第二種
length = [0:300]
signal2 = sin(2*pi*f*length/fs);figure(1)
plot(signal1,'-*')figure(2)
plot(signal2,'-*')
? ? ? ? 這里可以有兩種不同的寫法,個(gè)人比較喜歡第二種。大家隨便選,來(lái)看圖像,這里建議用stem函數(shù)來(lái)看它的離散圖像。大家感興趣的可以數(shù)一下一個(gè)周期內(nèi)正好為26個(gè)點(diǎn)
? ? ? ? 第二個(gè)概念是量化,量化是將模擬信號(hào)或連續(xù)取值的信號(hào)轉(zhuǎn)換為有限個(gè)離散值的過(guò)程。在數(shù)字信號(hào)處理和通信中,由于數(shù)字系統(tǒng)只能處理離散的數(shù)值,所以需要對(duì)連續(xù)的模擬信號(hào)進(jìn)行量化。量化通過(guò)將信號(hào)的取值范圍劃分成若干個(gè)區(qū)間(稱為量化級(jí)),然后將落在每個(gè)區(qū)間內(nèi)的信號(hào)值用一個(gè)特定的離散值(量化值)來(lái)表示。量化會(huì)引入量化誤差,即量化后的信號(hào)值與原始信號(hào)值之間的差異。量化誤差的大小取決于量化級(jí)的數(shù)量和量化方式。量化級(jí)越多,量化誤差通常越小,但同時(shí)也會(huì)增加數(shù)據(jù)量和處理復(fù)雜度。在開(kāi)始的圖像當(dāng)中,我們可以看到信號(hào)被分成一個(gè)階梯函數(shù),那樣的就是我們的一個(gè)量化信號(hào)。大家在學(xué)AD轉(zhuǎn)換的時(shí)候,或許會(huì)學(xué)到過(guò)量化階數(shù)這一概念。這里的量化級(jí)數(shù)則是另一個(gè)和它相關(guān)的概念。量化級(jí)數(shù)和量化階數(shù)是量化過(guò)程中的兩個(gè)相關(guān)概念。量化級(jí)數(shù)是指量化后可能的取值個(gè)數(shù)。量化階數(shù)則是相鄰兩個(gè)量化電平之間的差值。它們之間存在這樣的關(guān)系:量化階數(shù) = 量化范圍 / 量化級(jí)數(shù)。這里先給出一個(gè)簡(jiǎn)單的代碼。僅供參考。
%量化信號(hào)
%% 生成一個(gè)正弦波信號(hào)
t = 0:0.01:1; % 時(shí)間向量
x = sin(2 * pi * 5 * t); % 正弦波信號(hào)% 定義量化參數(shù)
num_levels = 16; % 量化級(jí)數(shù)
q_levels = linspace(-1, 1, num_levels); % 量化級(jí)別% 對(duì)信號(hào)進(jìn)行量化
x_quantized = quantiz(x, q_levels);% 繪制原始信號(hào)和量化信號(hào)
figure(1);
subplot(2, 1, 1);
plot(t, x);
xlabel('t/s');
ylabel('幅值');
title('原信號(hào)');subplot(2, 1, 2);
stairs(t, x_quantized, 'r');
xlabel('t/s');
ylabel('幅值');
title('量化后的信號(hào)');
grid on;% 顯示量化級(jí)別
disp('量化級(jí)別:');
disp(q_levels);% 量化函數(shù)定義
function y = quantiz(x, q_levels)% 初始化量化后的輸出信號(hào)y = zeros(size(x));% 對(duì)每個(gè)信號(hào)樣本進(jìn)行量化for i = 1:length(x)% 找到最接近的量化級(jí)別[~, idx] = min(abs(q_levels - x(i)));y(i) = q_levels(idx);end
end
? ? ? ?圖像如下
????????當(dāng)然在MATLAB當(dāng)中,我們還可以使用向上取整或者是向下取整或者是四舍五入等等能夠讓信號(hào)歸一到不同水平的電平上就行了。
? ? ? ? 更多的話,大家繼續(xù)follow我吧。
? ? ? ? 欲知后事如何,且聽(tīng)下回分解。OVO.......