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