请给出以下三个问题的matlab代码: 用matlab产生独立等概的二进制信源, 1、画出OOK信号波形和功率谱; 2、画出2PSK信号波形和功率谱; 3、画出2FSK信号波形和功率谱(设频差远大于码元速率)。
时间: 2024-04-06 09:32:30 浏览: 66
matlab实现ook2fsk2psk信号频谱波形-ookaskfsk.m
好的,我会根据您的要求回答问题,以下是对应的 MATLAB 代码:
1、产生独立等概的二进制信源:
```matlab
clear;
clc;
N = 10000; % 信源长度
p0 = 0.5; % 0的概率
p1 = 1 - p0; % 1的概率
source = rand(1, N) < p0; % 产生等概率二进制信源
```
2、画出OOK信号波形和功率谱:
```matlab
fs = 1000; % 采样频率
fc = 100; % 载波频率
tb = 1/fs; % 采样间隔时间
t = 0:tb:(N-1)*tb; % 时间轴
s = source*2-1; % 二进制信号转换为±1信号
OOK = s.*cos(2*pi*fc*t); % OOK调制信号
subplot(2,1,1);
plot(t, OOK);
title('OOK信号波形');
xlabel('时间/s');
ylabel('幅值');
[Pxx,f] = periodogram(OOK,[],[],fs); % 计算功率谱
subplot(2,1,2);
plot(f,10*log10(Pxx));
title('OOK信号功率谱');
xlabel('频率/Hz');
ylabel('功率谱/dB');
```
3、画出2PSK信号波形和功率谱:
```matlab
phi = pi/2; % 初始相位
PSK = s.*cos(2*pi*fc*t+phi); % 2PSK调制信号
subplot(2,1,1);
plot(t, PSK);
title('2PSK信号波形');
xlabel('时间/s');
ylabel('幅值');
[Pxx,f] = periodogram(PSK,[],[],fs); % 计算功率谱
subplot(2,1,2);
plot(f,10*log10(Pxx));
title('2PSK信号功率谱');
xlabel('频率/Hz');
ylabel('功率谱/dB');
```
4、画出2FSK信号波形和功率谱:
```matlab
f1 = 100; % 第一个载波频率
f2 = 200; % 第二个载波频率
deltat = 10*tb; % 符号时间
fsk = cos(2*pi*f1*t).*cos(2*pi*fc*t) + sin(2*pi*f2*t).*sin(2*pi*fc*t); % 2FSK调制信号
subplot(2,1,1);
plot(t, fsk);
title('2FSK信号波形');
xlabel('时间/s');
ylabel('幅值');
[Pxx,f] = periodogram(fsk,[],[],fs); % 计算功率谱
subplot(2,1,2);
plot(f,10*log10(Pxx));
title('2FSK信号功率谱');
xlabel('频率/Hz');
ylabel('功率谱/dB');
```
希望这些代码可以对您有所帮助!
阅读全文