基本上来源网络大佬们,自己稍微整理下,学习下使用:
clc;
clear all;
% Loader Octave packages
pkg load signal
##
x=linspace(-10,10);
figure(1);
## 正弦波
subplot(2,1,1);
plot(x, sin(x));
hold on;
plot(x, cos(x));
xlabel("x");
ylabel("y");
legend("sin(x)","cos(x)");
title("sin(x) and cos(x)");
##
subplot(2,1,2);
plot(x, sin(x)./x);
xlabel("x");
ylabel("y");
legend("sin(x)/x");
title("sin(x)/x");
##AM调试示例
% 信号抽样时间间隔
ts=0.0025;
# 时间矢量
t=0:ts:10-ts;
# 抽样频率
fs=1/ts;
# fft的频率分辨率
df=fs/length(t);
# 生成随机数种子的消息序列
msg=randi([-3 3],100,1);## 100 x 1的矩阵
# 扩展成取样信号形式
h1=ones(1,fs/10);## 1 x fs/10的1矩阵
msg1=msg*ones(1,fs/10);## 100 x fs/10的矩阵
#矩阵的转置
h2=msg1.';##msg1的转置,即 fs/10 x 100的矩阵
## 重新调整为 1 x length(t)的矩阵
msg2=reshape(msg1.',1,length(t));
#求消息信号的频谱
Pm=fft(msg2)/fs; ##除以fs才是模拟信号的实际频谱
f=-fs/2:df:fs/2-df; ##频率范围
figure(2);
subplot(2,2,1);
plot(t,msg2);##时域域消息信号
title('消息信号时域','fontname','黑体');
subplot(2,2,2);
plot(f,fftshift(abs(Pm)));##频域消息信号频谱
title('消息信号频谱','fontname','黑体');
# 幅度
A=4;
% 载波频率
fc=100;
% 已调信号
Sam=(A+msg2).*cos(2*pi*fc*t);##已调信号
# 已调信号的频谱
Pam=fft(Sam)/fs;
subplot(2,2,3);
plot(t,Sam);##时域已调信号
title("已调AM信号时域","fontname","黑体");
subplot(2,2,4);
plot(f,fftshift(abs(Pam)));##频域已调信号
title("已调AM信号频谱","fontname","黑体");
#axis([-200 200 0 23])
Pc=sum(abs(Sam).^2)/length(Sam);%已调信号功率
Ps=Pc-A^2/2;%消息信号功率
eta=Ps/Pc;%调制效率