matlab2016a中的dmod函数没有怎么办?

%%%%高斯白噪声
clear
clc
N=512;
ns=wgn(N,1,0);
y1=2*(ns-mean(ns))./std(ns);
%%%%单频信号
fc2=100;
t2=(0:N-1)'./N;
y2=2*cos(2*pi*fc2*t2);
%%%%BPSK信号
Fs=1; %采样率
Fd=Fs/32; %码元波特率
Fc=Fs/8; %载波频率
%Fs>Fc,Fs/Fd为一正整数,并且Fc>=4*Fd
temp=randint(floor(1024*Fd),1,2);
y3=dmod(temp,Fc,Fd,Fs,'psk',2);%ok
df=Fs/64;
dalpha=Fs/1024;
[scf1,alpha1,freq1]=fam(y1,Fs,df*2,dalpha);%%%
[scf2,alpha2,freq2]=fam(y2,Fs,df,dalpha);%%%
[scf3,alpha3,freq3]=fam(y3,Fs,df,dalpha);%%%
%白噪声循环谱
figure(1);
abs_scf1=abs(scf1);
mesh(alpha1,freq1,abs_scf1./max(abs_scf1(:)));
xlim([min(alpha1),max(alpha1)])
ylim([min(freq1),max(freq1)])
colormap(1-gray(256).^.25)
xlabel('\fontsize{12}{\alpha}/Hz');
ylabel('\fontsize{12}f/Hz');
title('白噪声的循环谱')
%单频信号循环谱
figure(2);
abs_scf2=abs(scf2);
mesh(alpha2,freq2,abs_scf2./max(abs_scf2(:)));
xlim([min(alpha2),max(alpha2)])
ylim([min(freq2),max(freq2)])
colormap(1-gray(256).^.25)
xlabel('\fontsize{12}{\alpha}/Hz');
ylabel('\fontsize{12}f/Hz');
title('单频正弦信号的循环谱')
%BPSK信号循环谱
figure(3);
abs_scf3=abs(scf3);
mesh(alpha3,freq3,abs_scf3./max(abs_scf3(:)));
xlim([min(alpha3),max(alpha3)])
ylim([min(freq3),max(freq3)])
colormap(1-gray(256).^.25)
xlabel('\fontsize{12}{\alpha}/Hz');
ylabel('\fontsize{12}f/Hz');
title('BPSK信号的循环谱')
%%%%%%%%%%%下面求解BPSK信号的截面特性 %%%%%%%%%%%%%%%%%%%%%%%%%%
%alpha=0的截面
indxa=find(alpha3==0);
scf3_a=abs_scf3(:,indxa);
figure(4)
stem(freq3,scf3_a./max(scf3_a))
xlabel('\fontsize{12}f/Hz (\fontname{arial}{\alpha}=0)');
ylim([0,1.05])
text(-0.25,0.6,'\fontsize{10}-2F_{c}\rightarrow ', 'HorizontalAlignment','left')
text(0.15,0.6,'\fontsize{10}\leftarrow 2F_{c}', 'HorizontalAlignment','left')
text(0.02,0.2,'\fontsize{10}-F_{d}\rightarrow ', 'HorizontalAlignment','left')
text(0.15,0.2,'\fontsize{10}\leftarrow F_{d}', 'HorizontalAlignment','left')
ylabel('\fontsize{10}\fontname{宋体}归一化幅度');
title('\fontname{arial}{\alpha}=0的\fontname{arial}f截面');
%f=0的截面
indxf=find(freq3==0);
scf3_f=abs_scf3(indxf,:);
figure(5)
stem(alpha3,scf3_f./max(scf3_f))
xlabel('\fontsize{12}{\alpha}/Hz (\fontname{arial}f=0)');
title('\fontname{arial}f=0的{\alpha}截面');
%f=fc的截面
indxf=find(freq3==Fc);
scf3_f=abs_scf3(indxf,:);
figure(6)
stem(alpha1,scf3_f./max(scf3_f))
xlabel('\fontsize{12}{\alpha}/Hz (\fontname{arial}f=F_{c})');
ylim([0,1.05])
text(-0.25,0.2,'\fontsize{10}-F_{d}\rightarrow ', 'HorizontalAlignment','left')
text(0.1,0.2,'\fontsize{10}\leftarrow F_{d}', 'HorizontalAlignment','left')
ylabel('\fontsize{10}\fontname{宋体}归一化幅度');
colormap(gray)
title('\fontname{arial}f=F_{c}的{\alpha}截面');

如果你的 MATLAB 版本中没有 dmod 函数,你可以自己编写该函数来模拟它的功能。dmod 函数的作用是将数字信号进行调制,包括调幅(AM)、调频(FM)和相位调制(PM)等方式。
下面是一个简单的例子,演示如何使用 MATLAB 来实现 BPSK 调制(二进制相移键控):
% 生成随机的二进制数字序列
N = 1000; % 信号长度
bits = randi([0 1], N, 1); % 二进制随机数字序列
% 设置参数
Fc = 10; % 载波频率
Fs = 100; % 采样率
T = 1/Fs; % 采样间隔
% 生成调制信号
t = (0:N-1)*T; % 时间向量
s = sqrt(2/T)*sin(2*pi*Fc*t + pi*(1-bits)); % BPSK 调制信号
% 绘制时域波形和频谱
figure;
subplot(2,1,1); plot(t, s); title('BPSK 调制信号时域波形');
subplot(2,1,2); pwelch(s,[],[],[],Fs); title('BPSK 调制信号频谱');
这段代码将随机生成长度为 1000 的二进制数字序列,然后使用 BPSK 调制生成一个调制信号 s。在绘制时域波形和频谱时,使用 pwelch 函数进行频谱估计。你可以根据自己的需要修改代码来实现不同的调制方式。
温馨提示:答案为网友推荐,仅供参考
相似回答