MATLAB實現振幅調制(AM調制信號)

AM調制是通信專業非常重要的一個知識點。今天我們使用MATLAB編程實現AM調制。

我們實現輸入一個載波信號的頻率與調制信號的頻率后,再輸入調幅度,得到已調信號的波形與包絡信號的波形,再使用FFT算法分析出已調信號的頻譜圖。

源代碼:

調制函數的編寫:

function AM_modulation(m, fm, fc)% 參數設置fs = 10*fc;       % 自適應采樣頻率(滿足奈奎斯特準則)T = 2;            % 信號持續時間(秒)t = 0:1/fs:T-1/fs; % 時間向量% 驗證調制參數合理性if m < 0error('調制指數不能為負數');endif fm >= fcwarning('調制頻率接近或超過載波頻率可能影響調制效果');end% 生成調制信號和已調信號modulating_signal = m * cos(2*pi*fm*t);carrier = cos(2*pi*fc*t);am_signal = (1 + modulating_signal) .* carrier;envelope = 1 + modulating_signal;envelope1 = -(1 + modulating_signal);% 繪制時域波形(增強可視化)figure('Name','AM調制時域分析','NumberTitle','off');ax1 = subplot(2,1,1);plot(t, am_signal, 'Color', [0 0.4470 0.7410], 'LineWidth', 1.2);hold on;plot(t, envelope, 'r--', 'Color', [0.8500 0.3250 0.0980], 'LineWidth', 1.5);plot(t, envelope1, 'r--', 'Color', [0.8500 0.3250 0.0980], 'LineWidth', 1.5);title(['AM時域波形  m=', num2str(m), ', f_m=', num2str(fm), 'Hz, f_c=', num2str(fc), 'Hz']);xlabel('時間 (s)');ylabel('幅度');legend('已調信號','理論包絡','Location','best');grid on;xlim([0 3/fm]);  % 顯示3個調制周期% 局部放大觀察細節ax2 = subplot(2,1,2);plot(t, am_signal, 'Color', [0 0.4470 0.7410], 'LineWidth', 1.2);hold on;plot(t, envelope, '--', 'Color', [0.8500 0.3250 0.0980], 'LineWidth', 1.5);plot(t, envelope1, '--', 'Color', [0.8500 0.3250 0.0980], 'LineWidth', 1.5);title('局部放大');xlabel('時間 (s)');ylabel('幅度');xlim([0 1/fm]);  % 顯示1個調制周期grid on;linkaxes([ax1,ax2],'y');  % 同步縱坐標范圍% 高級頻譜分析(手動實現FFT)N = length(am_signal);fft_data = zeros(1,N);% 離散傅里葉變換實現for k = 1:N/2+1cos_term = cos(2*pi*(k-1)*(0:N-1)/N);sin_term = -sin(2*pi*(k-1)*(0:N-1)/N);fft_data(k) = sum(am_signal.*(cos_term + 1i*sin_term));endP2 = abs(fft_data/N);P1 = P2(1:N/2+1);P1(2:end-1) = 2*P1(2:end-1);f = fs*(0:(N/2))/N;% 頻譜可視化(動態范圍調整)figure('Name','AM頻譜分析','NumberTitle','off');stem(f, P1, 'filled', 'MarkerSize',4, 'Color',[0.6350 0.0780 0.1840]);title(['信號頻譜  f_c=',num2str(fc),'±',num2str(fm),'Hz']);xlabel('頻率 (Hz)');ylabel('幅度');grid on;% 自動設置頻率顯示范圍freq_span = max(10*fm, 2*fc);  % 自適應頻率范圍xlim([max(0,fc-3*fm) fc+3*fm]);xticks(unique([fc-fm, fc, fc+fm, linspace(fc-3*fm,fc+3*fm,5)]));% 標注主要頻率成分hold on;[~,idx] = max(P1);text(f(idx), P1(idx), sprintf('%.1fHz\n%.2f',f(idx),P1(idx)),...'VerticalAlignment','bottom');annotation('textbox',[0.15 0.7 0.2 0.1],'String',...sprintf('頻率分辨率:%.2fHz',fs/N),'EdgeColor','none');
end

腳本的編寫:

% 常規調制
input_m=input('請輸入調制指數:');
input_fm=input('請輸入調制信號頻率:');
input_fc=input('請輸入載波信號頻率:');
AM_modulation(input_m, input_fm, input_fc)

導出圖片

輸入參數后,生成相應的波形:

?

導出包絡波形和調制波形:

導出的頻譜圖:

?

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

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

相關文章

JJJ:linux ida

文章目錄 1.總結2.各類函數2.1 分配一個倉庫2.2 銷毀倉庫2.3 從倉庫里面分配一個整數id2.4 將上面分配的整數id從倉庫里面刪除2.5 在指定范圍內分配一個id 1.總結 ida使用起來很簡單&#xff0c;就是先分配一個倉庫一樣的實例&#xff0c;再從這個倉庫里面分配一個獨一無二的整…

FastByteArrayOutputStream和ByteArrayInputStream有什么區別

FastByteArrayOutputStream 和 ByteArrayInputStream 是兩種完全不同的 Java I/O 類&#xff0c;它們的主要區別體現在 設計目的 和 使用場景 上。以下是詳細對比&#xff1a; 1. 核心區別總結 特性FastByteArrayOutputStream (Spring框架)ByteArrayInputStream (JDK原生)所屬…

docker-compose——安裝redis

文章目錄 一、編寫docker-compose.yaml文件二、編寫redis.conf文件三、啟動docker-compose 一、編寫docker-compose.yaml文件 version: 3.3 services:redis:image: redis:latestcontainer_name: redisrestart: alwaysports:- 6379:6379volumes:- ./redis/data:/data- ./redis/…

東芝推出新的SCiB模塊,散熱性能加倍,適用于電動公交車、電動船舶和固定應用

東京—東芝公司推出了一種新的SCiB模塊&#xff0c;這是一種專為電動汽車、電動船舶和固定應用而設計的鋰離子電池。新產品采用鋁制底板&#xff0c;散熱量約為當前模塊的兩倍。它將于2025年4月中旬在日本和全球上市。 鋰離子電池的使用越來越多&#xff0c;而且越來越多樣化&a…

【進程控制二】進程替換和bash解釋器

【進程控制二】進程替換 1.exec系列接口2.execl系列2.1execl接口2.2execlp接口2.3execle 3.execv系列3.1execv3.2總結 4.實現一個bash解釋器4.1內建命令 通過fork創建的子進程&#xff0c;會繼承父進程的代碼和數據&#xff0c;因此本質上還是在執行父進程的代碼 進程替換可以將…

Java基礎語法之數組

數組 一、認識數組 1.什么是數組 數組就是一個容器&#xff0c;用來存一批同種類型的數據。 舉例 20, 10, 80, 60, 90 int[] arr {20, 10, 80, 60, 90};張三, 李四, 王五 String[] names {"張三", "李四", "王五"};2.為什么要使用數組 假設…

Java死鎖排查:線上救火實戰指南

想象一下&#xff0c;你正在值班&#xff0c;突然監控告警紅成一片&#xff0c;用戶反饋雪花般飄來&#xff1a;“系統卡死了&#xff01;用不了了&#xff01;” —— 這很可能就是Java應用遭遇了“死鎖”這個大魔王。這時候&#xff0c;你就是救火隊長&#xff0c;首要任務不…

006-nlohmann/json 結構轉換-C++開源庫108杰

絕大多數情況下&#xff0c;程序和外部交換的數據&#xff0c;都是結構化的數據。 1. 手工實現——必須掌握的基本功 在的業務類型的同一名字空間下&#xff0c;實現 from_json 和 to_json 兩個自由函數&#xff08;必要時&#xff0c;也可定義為類型的友元函數&#xff09;&a…

白盒測試——基本路徑測試法

一、實驗名稱 白盒測試——基本路徑測試法 二、實驗目的 白盒測試是結構測試&#xff0c;是依據被測程序的內部邏輯結構設計測試用例&#xff0c;驅動被測程序運行完成的測試&#xff0c;通過本實驗希望&#xff1a; 1、掌握基本路徑測試法的基本概念&#xff0c;用具體的例子…

【嵌入模型與向量數據庫】

目錄 一、什么是向量&#xff1f; 二、為什么需要向量數據庫&#xff1f; 三、向量數據庫的特點 四、常見的向量數據庫產品 FAISS 支持的索引類型 vs 相似度 五、常見向量相似度方法對比 六、應該用哪種 七、向量數據庫的核心邏輯 &#x1f50d; 示例任務&#xff1a;…

matlab中和三角函數相關的內容

和三角相關的函數 以下內容為Ai輸出 函數描述示例sin(x)正弦函數&#xff0c;返回x的正弦值&#xff0c;x單位為弧度sin(pi/2)cos(x)余弦函數&#xff0c;返回x的余弦值&#xff0c;x單位為弧度cos(pi)tan(x)正切函數&#xff0c;返回x的正切值&#xff0c;x單位為弧度tan(pi…

scratch基礎-外觀模塊

一、本次任務 二、內容詳解 1、模塊介紹 1、說[你好] (2)秒&#xff1a;臨時對話框&#xff0c;短暫對話 2、說[你好]&#xff1a;持續顯示對話框&#xff0c;長文本顯示 3、思考[嗯…] (2)秒&#xff1a;臨時顯示思考氣泡&#xff0c;用于角色思考 4、思考[嗯…] &#xff1a…

TAOCMS漏洞代碼學習及分析

路由規則 分為前臺和后臺&#xff0c; 前臺在api.php中 <?php session_start(); include(config.php); include(SYS_ROOT.INC.common.php); $ctrl$_REQUEST[ctrl]; $action$_REQUEST[action]; $mucfirst($action); if(!in_array($m,array(Api,Comment)))d…

Spring @Scheduled注解詳解

文章目錄 1.Scheduled注解定義2.配置 Scheduled2.1 開啟定時任務支持2.2 創建定時任務 3. 常用屬性3.1 fixedRate3.2 fixedDelay3.3 cron 4.工作原理4.1 基于TaskScheduler4.2 使用 ThreadPoolTaskScheduler4.3 定時任務的執行流程 5. 延時執行的定時任務5.1 創建定時任務類5.2…

理解計算機系統_并發編程(5)_基于線程的并發(二):線程api和基于線程的并發服務器

前言 以<深入理解計算機系統>(以下稱“本書”)內容為基礎&#xff0c;對程序的整個過程進行梳理。本書內容對整個計算機系統做了系統性導引,每部分內容都是單獨的一門課.學習深度根據自己需要來定 引入 接續上一篇理解計算機系統_并發編程(4)_基于線程的并發(一…

使用PhpStudy搭建Web測試服務器

一、安裝PhpStudy 從以下目錄下載PhpStudy安裝文件 Windows版phpstudy下載 - 小皮面板(phpstudy) (xp.cn) 安裝成功之后打開如下界面 點擊啟動Apache 查看網站地址 在瀏覽器中輸入localhost:88,出現如下頁面就ok了 二、與Unity交互 1.配置下載文件路徑&#xff0c;點擊…

cocos creator 3.8 下的 2D 改動

在B站找到的系統性cocos視頻教程,純2D開發入門,鏈接如下: zzehz黑馬程序員6天實戰游戲開發微信小程序&#xff08;Cocos2d的升級版 CocosCreator JavaScript&#xff09;_嗶哩嗶哩_bilibili黑馬程序員6天實戰游戲開發微信小程序&#xff08;Cocos2d的升級版 CocosCreator Ja…

【Hot 100】208. 實現 Trie (前綴樹)

目錄 引言實現 Trie (前綴樹)我的解題代碼解析代碼思路分析優化建議1. 內存泄漏問題2. 使用智能指針優化內存管理3. 輸入合法性校驗&#xff08;可選&#xff09;4. 其他優化 總結 &#x1f64b;?♂? 作者&#xff1a;海碼007&#x1f4dc; 專欄&#xff1a;算法專欄&#x1…

Unity3D仿星露谷物語開發42之粒子系統

1、目標 使用例子系統&#xff0c;實現割草后草掉落的特效。 通過PoolManager獲取特效預制體&#xff0c;通過VFXManager來觸發特效。 2、配置例子特效 在Hierarchy -> PersistentScene下創建新物體命名為Reaping。 給該物體添加Particle System組件。 配置例子系統參數…

視覺-語言基礎模型作為高效的機器人模仿學習范式

摘要 近期&#xff0c;視覺語言基礎模型領域取得的進展彰顯了其在理解多模態數據以及解決復雜視覺語言任務&#xff08;包括機器人操作任務&#xff09;方面的能力。我們致力于探尋一種簡便的方法&#xff0c;利用現有的視覺語言模型&#xff08;VLMs&#xff09;&#xff0c;僅…