首页/文章/ 详情

《Contemporary Communication ...... MATLAB》(2)调制代码

2小时前浏览19
之前给了书籍,这次给出代码!书籍代码和本人写的代码!本人代码只限于模拟通信,数字通信的内容见下一篇文章!经过三个月的整理,终于在2024年11月和大家见面了。
本人写的代码是在学生写的基础上修订完成。之前给学生讲解了每个程序,顺道将代码改成了本人的编写风格,当然也加入了一些实际“因素”!这些因素恰恰是工作中会遇到的!先看书籍代码中的内容!
原先程序存在很多不规范之处,修改后方能运行!
函数名修改正确!但书中没有AM解调程序!那我来给大家补充了!为什么需要补充程序呢?是为了让大家能够知道在实际中如何使用这些知识!

那么在实际使用中,AM又如何发挥作用呢?
依旧通过程序来说明!这是最好的理论用于实践的过程!这样的学习才适用于工科生!请看代码!
% Load audio signal (as message signal)
[file, path] = uigetfile('*.wav', 'Select an Audio File');  % Load a .wav file
[audio_signal, Fs_audio] = audioread(fullfile(path, file));
Fs = Fs_audio;  
% Sampling frequency (Hz), usually 11025 Hz - 44100 Hz
% WAV 文件中的关键参数:
% RIFF Header:标识这是一个 RIFF(资源互换文件格式) 文件。
% Format Chunk:
% Subchunk1 ID:通常是 "fmt "。
% Subchunk1 Size:格式块的大小(通常为 16 字节)。
% Audio Format:音频格式(PCM 通常为 1)。
% Num Channels:声道数(例如,1 表示单声道,2 表示立体声)。
% Sample Rate:采样频率,以赫兹(Hz)表示。
% Byte Rate:每秒传输的字节数(Sample Rate × Num Channels × Bits Per Sample / 8)。
% Block Align:每个采样的字节数(Num Channels × Bits Per Sample / 8)。
% Bits Per Sample:每个样本的比特数(通常为 16、24 或 32)。
% Data Chunk:
% Subchunk2 ID:通常是 "data"。
% Subchunk2 Size:音频数据的大小。
% Audio Data:实际的音频样本数据。

% Normalize the audio signal
audio_signal = audio_signal / max(abs(audio_signal));  
% Normalize between -1 and 1
% Resample audio signal if its sampling frequency differs from the desired Fs
if Fs_audio ~= Fs
    audio_signal = resample(audio_signal, Fs, Fs_audio);
end
% Time vector for the signal
t = (0:length(audio_signal)-1) / Fs;

% Generate carrier signal
carrier_signal = cos(2 * pi * Fc * t)';

% Modulation (AM)
AM_signal = (1 + audio_signal) .* carrier_signal;

% Plot the modulated signal
figure;
subplot(3, 1, 1);
plot(t, audio_signal);
title('Original Audio Signal');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(3, 1, 2);
plot(t, AM_signal);
title('AM Modulated Signal');
xlabel('Time (s)');
ylabel('Amplitude');
% Demodulation using envelope detection
demodulated_signal = abs(hilbert(AM_signal)) - 1;  
% Subtract 1 to remove the DC offset
% Normalize the demodulated signal to match the original
demodulated_signal = demodulated_signal / max(abs(demodulated_signal));  
% Plot demodulated signal
subplot(3, 1, 3);
plot(t, demodulated_signal);
title('Demodulated Audio Signal');
xlabel('Time (s)');
ylabel('Amplitude');
% Play the original audio
disp('Playing original audio...');
sound(audio_signal, Fs);
pause(length(audio_signal)/Fs + 1);  % Wait until audio finishes playing
% Play the demodulated audio
disp('Playing demodulated audio...');
sound(demodulated_signal, Fs);
知识的难度在加大,趣味性也在增加!想学那就赶紧的!学懂了模拟调制技术也算是通信入门了!不过数字调制技术的难度远大于模拟调制技术,看了本人写的代码自然就明了。
通信原理与matlab仿真v3 第四章 BPSK调制解调器 再绪
......
一个系列!打开文章后,底部会出现目录。这个目录里面的文章所包含的代码是通信知识的最好实践!建议入门者好好学习!下面的这些代码都是经过本人的调试,注释非常的全面,肯定对大家有帮助!很多内容还和产品相关,包含工程经验。

讲了这么多内容,请大家赶快下载此书开始学起来吧,下一篇文章再给出相关的代码吧!友情提醒:只有一天有效!给出二维码链接!如果买过后,发现链接过期,请留言给我,本人会通过后台发送新的链接。

来源:通信工程师专辑
ACTMATLAB通信UM理论Origin
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-11-08
最近编辑:2小时前
算法工匠
博士后 | 高级工程师 诚信做事 认真讲课 传播知识
获赞 395粉丝 2578文章 328课程 40
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈