主頁 >  其他 > 深入理解采樣定理 + Matlab 仿真 Sa 函式的采樣與恢復

深入理解采樣定理 + Matlab 仿真 Sa 函式的采樣與恢復

2021-02-11 14:33:33 其他

  • 建議配合國寶老師的視頻食用,
    信號與線性系統分析 吳大正 郭寶龍

文章目錄

  • (1) 采樣的說明
    • 1. 為什么要取樣
    • 2. 什么是取樣
  • (2) 采樣定理
    • 1. 為什么要有奈奎斯特頻率
    • 2. 什么是采樣定理
  • (3) 信號的恢復
  • (4) Matlab的Sa函式取樣仿真
    • 1. 采樣信號Sa函式的說明
    • 2. 進行引數的說明及相關計算
    • 3. 結果的展示
    • 4. matlab 代碼

(1) 采樣的說明

1. 為什么要取樣

  • 我們要使用計算機去處理信號,信號都是連續的,在任意一個非空區間內都有無限個值,但是計算機的記憶體是一個有限值,只能完成有限的資料存盤和運算,所以要進行采樣和量化等操作,把信號離散成有限個點就可以使用計算機處理了,當信號在計算機中處理完,按照一定的規則恢復成連續的狀態就可以了,
  • 注意采樣定理和后面 DFT(discrete Fourier transform) 之間的聯系,

2. 什么是取樣

  • 取樣就是利用取樣脈沖序列從連續信號中 抽取離散的樣本值
    • 從時域上看 f s ( t ) = f ( t ) × s ( t ) f_s(t) = f(t) \times s(t) fs?(t)=f(t)×s(t)
    • 從頻域上看 F s ( j ω ) = 1 2 π F ( j ω ) ? S ( j ω ) F_s(j\omega) = \displaystyle\frac{1}{2\pi}F(j\omega) * S(j\omega) Fs?(jω)=2π1?F(jω)?S(jω)
  • 沖激取樣(理想取樣)的例子
    • 可以看到在時域上是通過乘積完成對應離散點的選取,在頻域上完成的是信號頻譜的周期延拓,

(2) 采樣定理

1. 為什么要有奈奎斯特頻率

  • 首先要明白一件事,使用采樣點恢復出原來的信號需要的是進行一個低通濾波,把頻域上的低頻波形濾出來就可以了,
  • 從上面的圖可以看出來,取樣在頻域中相當于進行了頻譜的周期延拓,所以就會出現一個問題,平移距離不夠會引起頻域波形的重疊,當發生重疊之后就無法完成濾波了,即無法完成信號的恢復了,因此需要對平移的距離有一個限制,也就是采樣定理中的奈奎斯特頻率,

2. 什么是采樣定理

  • 一個頻譜在區間 ( ? ω m , ω m ) (-\omega_m,\omega_m) (?ωm?,ωm?) 以外為 0 的帶限信號 f ( t ) f(t) f(t),可唯一的由其在均勻間隔 T s [ T s < 2 π / ω m ] T_s [T_s < 2\pi/\omega_m] Ts?[Ts?<2π/ωm?] 上的樣值點 f ( n T s ) f(nT_s) f(nTs?) 確定,
    • 注意必須是帶限信號,像沖激函式這樣的就無法取樣,因為在頻域上的無限意味著在時域信號的存在時間無限趨于 0,
    • 取樣頻率不能太低,必須 f s > 2 f m f_s > 2f_m fs?>2fm? ,最低取樣頻率 f s = 2 f m f_s = 2f_m fs?=2fm?稱為奈奎斯特頻率

(3) 信號的恢復

  • 參量的說明
    • 低通濾波器的截止角頻率: ω c \omega_c ωc?,從圖上明顯可以看出需要有 ω m < ω c < ω s ? ω m \omega_m<\omega_c<\omega_s-\omega_m ωm?<ωc?<ωs??ωm?,為方便取 ω c = 0.5 ω s \omega_c = 0.5\omega_s ωc?=0.5ωs?
    • 采樣角頻率: ω s \omega_s ωs?,注意根據采樣定理 ω s > 2 ω m \omega_s > 2\omega_m ωs?>2ωm?
    • 帶限信號的最大角頻率: ω m \omega_m ωm?
  • 信號恢復的程序是信號采樣程序的逆程序,實際上在進行頻域乘積濾波的程序中,時域進行了卷積的平移,平移到不同位置的函式疊加就恢復出原始信號,

(4) Matlab的Sa函式取樣仿真

1. 采樣信號Sa函式的說明

  • Matlab 中自帶的函式是 sinc 函式,其形式是 s i n ( π t ) π t \displaystyle\frac{sin(\pi t)}{\pi t} πtsin(πt)?,我們要在仿真中使用的是 Sa 函式,其形式是 s i n ( t ) t \displaystyle\frac{sin(t)}{t} tsin(t)?,因此 sa = sinc(t/pi)
  • 代碼:
    %% 列印出來sa函式
    t = -20:0.001:20;
    L = length(t);
    x = sinc(t / pi);
    plot(t,x,'LineWidth',3);
    xlabel('t');ylabel('Amplitude'); title('Sa(t)')
    
  • 結果:

2. 進行引數的說明及相關計算

  • 引數說明
    • s a ( t ) sa(t) sa(t) 的傅里葉變換結果是 π g 2 ( ω ) \pi g_2(\omega) πg2?(ω),就是一個門寬為 2 的門函式,因此可以知道 ω m = 1 \omega_m = 1 ωm?=1
    • 根據奈奎斯特采樣定律,這里選取 ω s = 2 ω m \omega_s = 2\omega_m ωs?=2ωm? ω s = 1.5 ω m \omega_s=1.5\omega_m ωs?=1.5ωm? ω s = 4 ω m \omega_s=4\omega_m ωs?=4ωm?,分別模擬臨界采樣,欠采樣和過采樣三種情況,相應的選取信號還原時低通濾波器的截止頻率 ω c = 0.5 ω s \omega_c = 0.5\omega_s ωc?=0.5ωs?
  • 這里選取時域的正半軸取樣點一共 N 個,下面使用 ∞ \infin 推公式,但是最后要用 N N N
  • 信號取樣
    • 沖激取樣函式: δ T s ( t ) = ∑ n = ? ∞ ∞ δ ( t ? n T s ) \delta_{T_s}(t)=\displaystyle\sum_{n=-\infin}^{\infin}\delta(t-nT_s) δTs??(t)=n=??δ(t?nTs?)
    • 通過采樣的定義可知 f s ( t ) = f ( t ) × s a ( t ) f_s(t) = f(t) \times sa(t) fs?(t)=f(t)×sa(t),在matlab中只需要 fs = sinc(t/pi)
  • 信號恢復
    • 采樣后的信號在時域上的運算式為 f s ( t ) = f ( t ) ∑ n = ? ∞ ∞ δ ( t ? n T s ) = ∑ n = ? ∞ ∞ δ ( t ? n T s ) f ( n T s ) f_s(t)=f(t)\displaystyle\sum_{n=-\infin}^{\infin}\delta(t-nT_s)=\displaystyle\sum_{n=-\infin}^{\infin}\delta(t-nT_s)f(nT_s) fs?(t)=f(t)n=??δ(t?nTs?)=n=??δ(t?nTs?)f(nTs?)
    • 假設采樣后的信號在頻域上的運算式為 F s ( j ω ) F_s(j\omega) Fs?(jω),并選取低通濾波器
      H ( ω ) = { T s , ∣ ω ∣ ≤ ω c 0 , ∣ ω ∣ > ω c H(\omega)=\begin{cases} T_s ,&|\omega|\leq \omega_c\\ 0, & |\omega|> \omega_c \end{cases} H(ω)={Ts?,0,?ωωc?ω>ωc??
      可以算出 H ( ω ) H(\omega) H(ω) 在時域上的運算式 h ( t ) = T s ω c π s a ( ω c t ) h(t)=T_s\displaystyle\frac{\omega_c}{\pi}sa(\omega_ct) h(t)=Ts?πωc??sa(ωc?t)之所以選取 H ( ω ) H(\omega) H(ω)的放大倍數為 T s T_s Ts? 是因為此時 h ( t ) h(t) h(t) 的系數是 1(因為 ω c = 0.5 ω s \omega_c = 0.5\omega_s ωc?=0.5ωs?),
    • 根據前面的討論,讓取樣后的信號通過低通濾波器相當于頻域相乘即 F ( j ω ) = F s ( j ω ) × H ( ω ) F(j\omega) = F_s(j\omega)\times H(\omega) F(jω)=Fs?(jω)×H(ω),同時根據時域和頻域的關系, f ( t ) = f s ( t ) ? h ( t ) f(t) = f_s(t) * h(t) f(t)=fs?(t)?h(t),帶入前面的結果可以得到 f ( t ) = T s ω c π ∑ n = ? ∞ ∞ f ( n T s ) s a ( ω c ( t ? n T s ) ) f(t)=T_s\displaystyle\frac{\omega_c}{\pi}\displaystyle\sum_{n=-\infin}^{\infin}f(nT_s)sa(\omega_c(t-nT_s)) f(t)=Ts?πωc??n=??f(nTs?)sa(ωc?(t?nTs?))

3. 結果的展示

  • 臨界取樣
  • 過采樣(實際上這里有一點不太明白,為什么過采樣恢復后信號的誤差會比臨界采樣的大??
  • 欠采樣

4. matlab 代碼

%% matlab 完成Sa信號的采樣和恢復
%% 取樣(臨界取樣)
% 取樣
figure(1);
wm = 1; %信號的最大頻率
ws = 2 * wm; %信號的采樣頻率(根據奈奎斯特頻率)
wc = 0.5 * ws;%濾波器的截止頻率
Ts = 2*pi/ws;%采樣間隔
N = 10;%時域采樣點數
n = -N:N;
nTs = n * Ts;%采樣資料的采樣時間
fs = sinc(nTs/pi);%完成采樣
subplot(311);
stem(nTs/pi,fs,'LineWidth',3);
xlabel("nTs");
ylabel("f(nTs)");
title("sa(t)的臨界取樣信號");
% 還原
Dt = 0.005;
t = -15:Dt:15;
fa = Ts*wc/pi * fs * sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));
subplot(312);
plot(t,fa,'LineWidth',3);
xlabel("t");
ylabel("f(t)");
title("由臨界取樣信號重構sa(t)");
% 展示誤差
error = abs(fa-sinc(t/pi));
subplot(313);
plot(t,error,'LineWidth',3);
xlabel("t");
ylabel("error(t)");
title("重構信號與原信號的誤差error(t)");
%% 取樣(過取樣)
% 取樣
figure(2);
wm = 1; %信號的最大頻率
ws = 4 * wm; %信號的采樣頻率(根據奈奎斯特頻率)
wc = 0.5 * ws;%濾波器的截止頻率
Ts = 2*pi/ws;%采樣間隔
N = 20;%時域采樣點數
n = -N:N;
nTs = n * Ts;%采樣資料的采樣時間
fs = sinc(nTs/pi);%完成采樣
subplot(311);
stem(nTs/pi,fs,'LineWidth',3);
xlabel("nTs");
ylabel("f(nTs)");
title("sa(t)的過取樣信號");
% 還原
Dt = 0.005;
t = -15:Dt:15;
fa = fs*Ts*wc/pi * sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));
subplot(312);
plot(t,fa,'LineWidth',3);
xlabel("t");
ylabel("f(t)");
title("由過取樣信號重構sa(t)");
% 展示誤差
error = abs(fa-sinc(t/pi));
subplot(313);
plot(t,error,'LineWidth',3);
xlabel("t");
ylabel("error(t)");
title("重構信號與原信號的誤差error(t)");
%% 取樣(欠取樣)
% 取樣
figure(3);
wm = 1; %信號的最大頻率
ws = 1.5 * wm; %信號的采樣頻率(根據奈奎斯特頻率)
wc = 0.5 * ws;%濾波器的截止頻率
Ts = 2*pi/ws;%采樣間隔
N = 7;%時域采樣點數
n = -N:N;
nTs = n * Ts;%采樣資料的采樣時間
fs = sinc(nTs/pi);%完成采樣
subplot(311);
stem(nTs/pi,fs,'LineWidth',3);
xlabel("nTs");
ylabel("f(nTs)");
title("sa(t)的欠取樣信號");
% 還原
Dt = 0.005;
t = -15:Dt:15;
fa = fs*Ts*wc/pi * sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));
subplot(312);
plot(t,fa,'LineWidth',3);
xlabel("t");
ylabel("f(t)");
title("由欠取樣信號重構sa(t)");
% 展示誤差
error = abs(fa-sinc(t/pi));
subplot(313);
plot(t,error,'LineWidth',3);
xlabel("t");
ylabel("error(t)");
title("重構信號與原信號的誤差error(t)");

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/258823.html

標籤:其他

上一篇:散人玩家打金攻略

下一篇:【2015南海小學】差(dec) 第一眼:A-B Problem!太簡單了!結果看到資料范圍,我傻了眼……

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more