matlab仿真 通信信號和系統分析(下)

(內容源自詳解MATLAB/SIMULINK 通信系統建模與仿真?? 劉學勇編著第三章內容,有興趣的讀者請閱讀原書)

一、離散傅里葉變換

?

?

clear all
n=0:30;%信號的時間范圍
x=sin(0.2*n).*exp(-0.1*n);
k=0:30;%頻率范圍
N=31;
Wnk=exp(-j*2*pi/N).^(n'*k);%DFT公式
X=x*Wnk;
subplot(2,1,1);stem(n,x);title('序列x');
subplot(2,1,2);stem(-15:15,[abs(X(17:end)) abs(X(1:16))]);%將DFT下標重新排列(DFT的默認下標為[0,N-1])
title('X幅度');

二、循環卷積

clear all
h=[6 3 4 2 1 -2];
x=[3 2 6  7 -1 -3];
h1=fliplr(h)%反轉序列h
H=toeplitz(h,[h(1) h1(1:5)]);%生成循環矩陣
%T = toeplitz(c,r) 返回非對稱托普利茨矩陣,
%其中 c 作為第一列,r 作為第一行。如果 c 和 r 的首個元素不同,toeplitz 將發出警告并使用列元素作為對角線
y=H*x';%計算循環卷積序列H=fft(h);
X=fft(x);%兩個序列的DFT
Y=H.*X;%循環卷積序列的DFT
y1=ifft(Y);%求循環卷積subplot(2,1,1);stem(y);title('直接計算');
subplot(2,1,2);stem(y1);title('DFT計算');

?

這里用兩種方得到的結果相同證明DFT運算內部是采用循環卷積而不是線性卷積

三、利用DFT求線性卷積

?

clear all
n1=0:20;
n2=0:10;
h=sinc(0.2*n1);
x=exp(-0.2*n2);
y=conv(x,h);%1.直接時域卷積h1=[h zeros(1,length(x)-1)];
x1=[x zeros(1,length(h)-1)];%對x(n),h(n)進行擴展
H1=fft(h1);
X1=fft(x1);%計算DFT
Y1=H1.*X1;
y1=ifft(Y1);%2.利用IDFT算出時域卷積結果
subplot(2,1,1);stem(y);title('直接計算');
subplot(2,1,2);stem(y1);title('DFT計算');

?

雖然DFT內部采用的是循環卷積,但是我們可以利用DFT實現線性卷積結果的求解

四、Hilbert變換

clear all
ts=0.01;%這里是連續信號,所以需要對其進行采樣才能處理,因為載波頻率為20HZ,由采樣定理至少需要40HZ,這里采用0.01s作為時間間隔
fs=1/ts;
t=0:ts:10;
df=fs/length(t);%DFT的頻譜分辨率
f=-50:df:50-df;%生成頻率矢量(用于畫圖)
x=exp(-10*abs(t-5)).*cos(2*pi*20*t);
X=fft(x)/fs;%求信號的頻譜,因為原始信號是模擬信號,由抽樣定理,必須求出FFT后再除以fs才是原模擬信號的頻譜xa=hilbert(x);%求解析信號
Xa=fft(xa)/fs;%求解析信號的頻譜
subplot(2,1,1);plot(t,x);%利用時間分辨率畫圖
title('信號x');xlabel('時間t');
subplot(2,1,2);plot(f,fftshift(abs(X)));title('信號x幅度譜');xlabel('頻率f');
%fftshift將0頻分量移到中心,重新排列abs(X),由于X是復數,所以利用abs求包絡
figure
subplot(2,1,1);plot(t,abs(xa));title('信號xa包絡');xlabel('時間t');
subplot(2,1,2);plot(f,fftshift(abs(Xa)));title('信號xa幅度譜');xlabel('頻率f');

?可以看到解析信號只包含正頻率部分,且幅度值是原始信號頻譜幅度值的兩倍

五、帶通信號的低通表示

clear all
ts=0.01;%這里是連續信號,所以需要對其進行采樣才能處理,因為載波頻率為20HZ,由采樣定理至少需要40HZ,這里采用0.01s作為時間間隔
fs=1/ts;
t=0:ts:10;
df=fs/length(t);%DFT的頻譜分辨率
f=-50:df:50-df;%生成頻率矢量(用于畫圖)
x=exp(-10*abs(t-5)).*cos(2*pi*20*t);
X=fft(x)/fs;%求信號的頻譜,因為原始信號是模擬信號,由抽樣定理,必須求出FFT后再除以fs才是原模擬信號的頻譜xa=hilbert(x);%求解析信號fc1=20;
x11=xa.*exp(-j*2*pi*fc1*t);%3-41公式,求20hz的低通信號
X11=fft(x11)/fs;%模擬信號,fft之后要除以fs
subplot(2,1,1);plot(t,real(x11));title('fc=20HZ時的低通信號同相分量');xlabel('時間t');
%同相分量就是解析信號中的實部
subplot(2,1,2);plot(f,fftshift(abs(X11)));title('fc=20HZ時的低通信號幅度譜');xlabel('頻率f');fc2=10;
x12=xa.*exp(-j*2*pi*fc2*t);
X12=fft(x12)/fs;
figure
subplot(2,1,1);plot(t,real(x12));title('fc=10HZ時的低通信號同相分量');xlabel('時間t');
subplot(2,1,2);plot(f,fftshift(abs(X12)));title('fc=10HZ時的低通信號幅度譜');xlabel('頻率f');

總結來說,就是利用解析信號和頻移公式實現了帶通信號的低通表示。

六、平穩隨機過程

clear all
N1=2000;
N2=100;
x=randn(N2,N1);%產生一個100行,2000列的高斯分布隨機數
for ii=1:N2%對每行進行循環[Rx(ii,:),lags]=xcorr(x(ii,:),50,'coeff');%xcorr是用來計算自相關函數,第一個參數是自相關函數序列,%第二個參數50是自相關值的最大時間偏移,lags就是[-50:50],可以理解為x中的每一行有2000個數,經過xcorr后每一行轉化為101個數的%自相關函數Sf(ii,:)=fftshift(abs(fft(Rx(ii,:))));%功率譜密度是自相關函數的傅里葉變換
endRx_av=sum(Rx)/N2;%求100行的平均值
Sf_av=sum(Sf)/N2;subplot(2,1,1);plot(lags,Rx_av);title('自相關函數')%畫出在最大時間偏移上的自相關函數的變化情況
subplot(2,1,2);plot(lags,Sf_av);title('功率譜密度')
axis([-50 50 0 2]);

?

七、帶通隨機過程

clear all
ts=0.002;
tao=-1:ts:1;%時間序列,因為自相關函數是連續函數,所以計算時需要抽樣,因為函數是sinc形式,所以在【-1,1】之外值會很小
%可以忽略不計
B=20;
f0=100;
R=sinc(2*B*tao).*cos(2*pi*f0*tao);fs=1/ts;
df=fs/length(tao);%頻域分辨率,用采樣頻率/時間序列的長度
f=-fs/2:df:fs/2-df;
S=fft(R)/fs;%因為這里自相關函數是連續函數,所以求功率譜密度時還要在除以fs
%類似于之前的例子中模擬信號求fft之后還要再除以fs才是正確地結果
subplot(2,1,1);plot(tao,R);title('自相關函數');xlabel('tao');ylabel('R');
subplot(2,1,2);plot(f,fftshift(abs(S)));title('功率譜密度');xlabel('f');ylabel('S');

八、隨機過程通過線性系統

clear all
N1=2000;
N2=100;
x=randn(N2,N1);%相同于例3.17
for ii=1:N2%對每一行進行循環y(ii,1)=x(ii,1);%由濾波器的響應可以推出來y(n)=0.6*y(n-1)+x(n),y(-1)=0,所以y(0)=x(0);for jj=2:N1y(ii,jj)=0.6*y(ii,jj-1)+x(ii,jj);%遞推公式end[Ry(ii,:),lags]=xcorr( y(ii,:),50,'coeff');Sf(ii,:)=fftshift(abs(fft(Ry(ii,:))));
endRy_av=sum(Ry)/N2;%平均化
Sf_av=sum(Sf)/N2;
subplot(2,1,1);plot(lags,Ry_av);title('自相關函數');
subplot(2,1,2);plot(lags,Sf_av);title('功率譜密度');

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43818.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43818.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43818.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決本地操作云服務器上的Redis

方案一:開放Redis默認端口,本地通過公網IP端口號的形式訪問。 方案二:每次將本地編寫好的Java代碼打包,放在云服務器上運行。 方案三:配置ssh端口轉發,把云服務器的redis端口,映射到本地主機。 …

【大模型】微調實戰—使用 ORPO 微調 Llama 3

ORPO 是一種新穎微調(fine-tuning)技術,它將傳統的監督微調(supervised fine-tuning)和偏好對齊(preference alignment)階段合并為一個過程。這減少了訓練所需的計算資源和時間。此外&#xff0…

使用微pe裝系統

本文僅作為記錄,不作為教程。 今天心血來潮想下點游戲玩玩,一看之前分的200gc盤已經紅了,再加上大學之后這個筆記本已經用得很少了,于是打算重裝電腦。 參考: 微PE輔助安裝_嗶哩嗶哩_bilibil… 1.下載微pe和win10系統到U盤 我這…

Xilinx zc706 USB電路解析

作者 QQ群:852283276 微信:arm80x86 微信公眾號:青兒創客基地 B站:主頁 https://space.bilibili.com/208826118 參考 USB OTG檢測原理 USB3320 USB_ID為低電平時候,為host模式,USB_ID為懸空(高…

python-23-零基礎自學python open()和replace()函數運用

學習內容:《python編程:從入門到實踐》第二版練習10-2 知識點: 打開文件,replace()替換文件內容,open(), 練習內容: 練習10-2:C語言學習筆記 可使用方法replace()將字符串中的特定單詞都替換為另一個單…

云計算環境下的等級保護測評

概述 云計算環境下的等級保護測評是一個涵蓋多個層面的綜合性評估活動,它不僅包括了傳統的信息系統安全等級保護測評內容,還需要考慮到云計算特有的安全特性和挑戰。隨著云計算技術的迅猛發展和廣泛應用,其在政務、金融、教育等行業中的角色日…

代碼隨想錄訓練營第三十一天 56合并區間 738單調遞增的數字

第一題: 原題鏈接:56. 合并區間 - 力扣(LeetCode) 思路:首先還是排序; 然后定義一個二維數組存放結果,先將第一個元素存放到結果數組中,然后從第一個元素開始遍歷整個數組。 當前…

kafka系列之offset超強總結及消費后不提交offset情況的分析總結

概述 每當我們調用Kafka的poll()方法或者使用Spring的KafkaListener(其實底層也是poll()方法)注解消費Kafka消息時,它都會返回之前被寫入Kafka的記錄,即我們組中的消費者還沒有讀過的記錄。 這意味著我們有一種方法可以跟蹤該組消費者讀取過的記錄。 如前…

6.824/6.5840 的Debugging by Pretty Printing配置

TA的原文在:Debugging by Pretty Printing (josejg.com) 為了在WSL2中配置好打印運行日志,我可是忙活了一下午。可惡的log配置 首先是安裝rich庫Textualize/rich: Rich is a Python library for rich text and beautiful formatting in the terminal. …

用于視頻生成的擴散模型

學習自https://lilianweng.github.io/posts/2024-04-12-diffusion-video/ 文章目錄 3D UNet和DiTVDMImagen VideoSora 調整圖像模型生成視頻Make-A-Video(對視頻數據微調)Tune-A-VideoGen-1視頻 LDMSVD穩定視頻擴散 免訓練Text2Video-ZeroControlVideo 參…

需求分析|泳道圖 ProcessOn教學

文章目錄 1.為什么使用泳道圖2.具體例子一、如何繪制確定好泳道中樞的角色在中央基于事實來繪制過程不要糾結美觀先畫主干處理流程再畫分支處理流程一個圖表達不完,切分子流程過程數不超25 ,A4紙的幅面處理過程過程用動詞短語最后美化并加上序號酌情加上…

leetcode hot 100 刷題記錄

題目300:最長遞增子序列(NO) 解題思路:動態規劃,就是dp[i]的運用,這里dp[i]表示第i個元素為結尾的最長子序列。 給你一個整數數組 nums ,找到其中最長嚴格遞增子序列的長度。 子序列 是由數組…

后端——全局異常處理

一、老辦法try-catch 當我們執行一些錯誤操作導致程序報錯時,程序會捕捉到異常報錯,這個異常會存在一個Exception對象里 那我們在spring boot工程開發時,當我們執行一個sql查詢時報錯了,那就會從最底層的Mapper層捕捉到Exceptio…

Android應用程序調試Logcat的使用

Android的程序調試主要使用Logcat進行,本節主要介紹Logcat的使用。 開啟調試模式 使用Android Studio進行程序調試,首先需要連接虛擬Android設備或真實Android設備,設備上需要啟用調試功能。 虛擬Android設備默認情況下會啟用調試功能。對…

C++ 入門03:函數與作用域

往期回顧: C 入門01:初識 C-CSDN博客C 入門02:控制結構和循環-CSDN博客 一、前言 在前面的文章學習中,我們了解了C語言的基礎,包括如何定義變量來存儲數據,以及如何利用輸入輸出流實現程序與用戶之間的無縫…

華為機考真題 -- 找朋友

題目描述: 在學校中,N 個小朋友站成一隊, 第 i 個小朋友的身高為 height[i],第 i 個小朋友可以看到的第一個比自己身高更高的小朋友 j,那么 j 是 i 的好朋友(要求 j >i)。請重新生成一個列表,對應位置的輸出是每個小朋友的好朋友位置,如果沒有看到好朋友,請在該位置…

微軟清華提出全新預訓練范式,指令預訓練讓8B模型實力暴漲!實力碾壓70B模型

現在的大模型訓練通常會包括兩個階段: 一是無監督的預訓練,即通過因果語言建模預測下一個token生成的概率。該方法無需標注數據,這意味著可以利用大規模的數據學習到語言的通用特征和模式。 二是指令微調,即通過自然語言指令構建…

Python面試題:請解釋什么是鴨子類型(duck typing)?

鴨子類型(Duck Typing)是一種動態類型語言中的概念,它基于對象的行為(方法和屬性)而不是其實際類型進行判斷。這個概念源自詹姆斯惠特科姆賴利的諺語: “如果它走起來像鴨子,叫起來像鴨子&#…

通過高德地圖 JS API實現單擊鼠標進行標注

效果圖: 核心代碼: <template><a-modal title="選擇地圖所在位置" :width="width" :visible="visible" @ok="handleOk" @cancel="handleCancel" cancelText="關閉"><div class="location-…

場外期權有交割日嗎?場外期權應該怎么交割?

今天帶你了解場外期權有交割日嗎&#xff1f;場外期權應該怎么交割&#xff1f;場外個股期權是一種非標準化的金融衍生品&#xff0c;它允許投資者在未來某一特定日期以特定價格買入或賣出某一特定股票。 交割日就是買賣雙方進行交割的日期,期權合約具有到期日,到期日的后一天…