matlab声音信号调制-3种方法(附matlab代码)

%% 单一频率信号调制
clc
clear
fs = 48000;
fc=18000;
t=0:1/fs:10;

signal = cos(2*pi*fc*t);
[ mr ] = plot_fft( signal,fs,'r' );
figure

[S,F,T,P,FC,TC] = spectrogram(signal,512,256,1024,fs,'yaxis');%20181206  ultragesture
SS = abs(S);
SSS = mapminmax(SS,0,1);
A=P./abs(S);
S1=S;
im=imagesc(T,F,abs(S1).^2);axis tight;

colormap('hot')


[S,F,T,P,FC,TC] = spectrogram(signal,1024,512,1024,fs,'yaxis');%20181206  ultragesture

%% OFDM信号调制
% UltraGesture 中的BC code调制方式
clc
clear
barker= comm.BarkerCode('Length',13,'SamplesPerFrame',13);
 trainSeq1 = mapminmax(step(barker),-1,1);
% trainSeq =[1 1 1 1 1 -1 -1 1 1 -1 1 -1 1];
trainSeq=(trainSeq1(:,1))';
trainSeq = [trainSeq trainSeq zeros(1,14)];
y2=trainSeq;

y1 = interp(y2, 12);
% fc=18500;
% fs=48000;
% t=0:1/fs:(length(y1)-1)/fs;
% y = sqrt(2)*cos(2*pi*fc*t);
% 
% y = 
plot(y1)
% b=zeros(1,168);
% y=[y1 b];
y=y1;
figure 
plot(y)

fs=48000;
y=repmat(y,1,2000);
fc = 19000;
t=0:1/fs:(length(y)-1)/fs;
% t=t(1:end-1);
y = sqrt(2)*y.*cos(2*pi*fc*t);

y=mapminmax(y,-1,1);

[ mr ] = plot_fft( y,fs,'r' );
% audiowrite('ultragesture.wav',y,fs);
% addpath E:\声音小组\LQPHP\audiotrack\matlab_code

% n=13;
n=9;
Wn=[17000/(fs/2) 21000/(fs/2)] %设计Butterworth低通滤波器
[a,b]=butter(n,Wn);
y1=y';
y31= filter(a,b,y1);
mr=plot_fft(y31,fs,'b');
figure
% [S,F,T,P,FC,TC] = spectrogram(y31,1024,512,1024,fs,'yaxis');%20181206  ultragesture
[ SS,SSS,S,F,T,P,FC,TC,A ] = STFT1( y31 );

t=0:1/fs:((length(y31)-1)/fs);

y3=mapminmax(y31',-1,1);


%% chirp信号调制
clc
clear
fs=48000;
fc=17000;
t=0:1/fs:10;
tt1=2;
tchirp = 0:1/fs:tt1;
tchirp = tchirp(1:end-1);

yy= chirp(tchirp,16000,tt1,23000);

%使用汉明窗对包络整形
N=length(yy);
h=hamming(N);
for m=1:N
    b(m) = yy(m)*h(m);
end
yy=b;
y1=zeros(1,0.05*fs);
y=[yy y1];
ss = [y y y y y y y y y y y y y];
% ss=[ss ss ss ss ss ss ss ss ss ss ss ss];
% ss=[ss ss ss ss ss ss ss ss ss ss ss ss];
% 
% t=t(1:end-1);
% A=0.4;
% signal1 = A*cos(2*pi*fc*t);

mr=plot_fft(ss,fs,'b');
% 画STFT图
figure
[S,F,T,P,FC,TC] = spectrogram(ss,512,256,1024,fs,'yaxis');%20181206  ultragesture
SS = abs(S);
SSS = mapminmax(SS,0,1);
A=P./abs(S);
S1=S;
im=imagesc(T,F,abs(S1).^2);axis tight;

colormap('hot')
 

附代码中用到的画FFT和STFT图的代码:
FFT:

function [ mr ] = plot_fft( x,fs,co )
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
N=length(x);
% N=512;

f=(1:N).*fs/(N);
mr=abs(fft(x,N));
 plot(f(1:N/2),mr(1:N/2)*2/N,co)
%  xlim([16000 23000]);
%  ylim([-0.01 0.01])
%  hold on
%plot(f,mr,'b')
title('原始信号频谱');


end


画STFT的图:

function [ SS,SSS,S,F,T,P,FC,TC,A ] = STFT1( x )
%UNTITLED 此处显示有关此函数的摘要
%   此处显示详细说明

fs=48000;

SNR=10;
colorbar;
xlabel('Time (Seconds)');ylabel('Hz')

% [S,F,T,P,FC,TC] = spectrogram(x,2048,1024,4096,fs,'yaxis');%20181205
% [S,F,T,P,FC,TC] = spectrogram(x,2048,1024,2048,fs,'yaxis');%20181206  conchirp
[S,F,T,P,FC,TC] = spectrogram(x,1024,512,1024,fs,'yaxis');%20181206  ultragesture

SS = abs(S);
SSS = mapminmax(SS,0,1);
A=P./abs(S);

S1=S;
% for i=2:size(S,2)
%     S1(:,i) = S(:,i)-S(:,i-1);
% end
im=imagesc(T,F,abs(S1).^2);axis tight;
% AA=mapminmax(AA,0,1);
% im=imagesc(T,F,AA_gaus.^2);axis tight;
% im=imagesc(T,F,(P./abs(S)));axis tight;
% im=imagesc(T,F,10*log10(abs(P)));axis tight;
% 
colormap('hot')
end


  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab是一常用的数学计算软件,也被广泛用于数字信号处理的仿真和调试。数字信号调制仿真和调制识别程序是Matlab在该领域的一个重要应用。该程序可以对不同类型的数字信号进行调制仿真,并通过对接收到的信号进行分析和处理,实现对信号调制方式的识别。 数字信号调制仿真是通过Matlab提供的信号处理工具箱和通信工具箱,可以模拟不同的调制方式,例如频移键控(FSK)、移相键控(PSK)、正交振幅调制(QAM)等。用户可以选择不同的调制参数,如载波频率、调制指数等,生成模拟信号调制识别程序是通过对接收到的数字信号进行分析和处理,利用Matlab的数字信号处理和通信工具箱中的算法和函数,确定信号调制方式。这可以通过对信号进行波形展示、频谱分析、自相关函数计算等方式实现。根据不同调制方式的特点,可以提取出相应的特征参数,如频谱峰值、调制指数等,再通过与预设模型或者已知调制方式进行匹配,得到最可能的调制方式。 该程序的应用领域很广泛。例如,在无线通信系统中,可以利用该程序对不同的调制方式进行仿真,评估其在不同信道条件下的性能。在实际通信环境中,可以通过调制识别程序,自动识别传输链路中的信号调制方式,帮助进行链路优化、干扰分析等工作。 总之,Matlab的数字信号调制仿真和调制识别程序为我们在数字信号处理领域提供了强大的工具和便利,可以对不同调制方式进行仿真和分析,为相关领域的研究和应用提供了重要支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值