DSP

数字信号处理画图的程序

2019-07-13 16:27发布

数字信号处理画图的程序

  1. 这里仅介绍实验二的FFT频谱画图的代码历程
  2. 这里使用的是matlab2018,但是下面的代码中的注释是按照C语言的规则写的

1. 正弦函数的频谱

clc; clear; x = 104; //横坐标,单位微秒【参数1】 x = x/100;//转换为频率,单位kHz y = 1.6; //纵坐标,单位V【参数2】 a = [-x,x]; b = [y,y]; stem(a,b); set(gcf,'unit','centimeters','position',[1,2,15,8]); //图像的大小,后边两个参数是长和宽,单位厘米 grid on; c1 = strcat(num2str(x),'kHz,',num2str(y),'V'); c2 = strcat(num2str(-x),'kHz,',num2str(y),'V'); c = char(c2,c1); text(a+0.1,b+0.1,c); // 添加标注 axis([floor(-2*x) ceil(2*x) 0 2]); ylabel('幅度/V'); xlabel('频率/kHz'); title(strcat(num2str(round(x)),'kHz正弦函数频谱')); 在这个实验中只需要改变【参数1】和【参数2】即可
示例图:
1

2. 方波频谱

clc; clear; x = [100 296 490 680]; // 横坐标【参数1】 x = x./100; y = [2.6 0.312 0.064 0.044]; // 纵坐标【参数2】 x_max = max(x); x_min = min(x); a = [-x,x]; b = [y,y]; stem(a,b); set(gcf,'unit','centimeters','position',[10,10,35,12]); //这里的大小可以适当调整【参数3】 grid on; c1 = strcat(num2str(a(1)),'kHz,',num2str(b(1)),'V');//这里笔者没有找到好的代码方法 c2 = strcat(num2str(a(2)),'kHz,',num2str(b(2)),'V');//只能以这种笨方法来添加备注 c3 = strcat(num2str(a(3)),'kHz,',num2str(b(3)),'V');//c的个数为x数组的个数×2 c4 = strcat(num2str(a(4)),'kHz,',num2str(b(4)),'V');//比如x数组个数如果为3 c5 = strcat(num2str(a(5)),'kHz,',num2str(b(5)),'V');//那么把最后两个删掉就可以了 c6 = strcat(num2str(a(6)),'kHz,',num2str(b(6)),'V'); c7 = strcat(num2str(a(7)),'kHz,',num2str(b(7)),'V'); c8 = strcat(num2str(a(8)),'kHz,',num2str(b(8)),'V'); c = char(c1,c2,c3,c4,c5,c6,c7,c8);//这个和上面的个数相对应 text(a+0.1,b+0.1,c); axis([floor(-1.2*x_max) ceil(1.2*x_max) 0 3]); ylabel('幅度/V'); xlabel('频率/kHz'); title(strcat(num2str(round(x_min)),'kHz方波函数频谱')); 也是只需要改变【参数1】和【参数2】的矩阵值即可,【参数3】可以调整大小
示例图:
2