概述
使用matlab生成一个幅值为[-1,1],周期为2*pi(对应的频率就是1/(2*pi)),时间为10秒,时间间隔为0.01秒的波形
生成方波的步骤详解
首先,定义一个数组,数组元素从0开始,step为0.01,结束元素为10
t=0:0.01:10; %t就是相当于一个数组[0.01, 0.02, 0.03,..., 9.98, 9.99, 10]
然后,以上面的数组 t 为参数调用 matlab 提供的 square 函数生成一个数组 f
f=square(t);
square 函数计算一个周期波形的伪代码实现如下
%matlab 的 square 函数生成的方波的默认周期是 2*pi
%下面的 k 为最接近 t[i] ,且小于等于 t[i] 的整数
%for t[i] : t
% if t[i]>=(2*k*(2*pi/2)) && t[i]<((2*k+1)*(2*pi/2))
% y(t[i])=1
% else if t[i]>=((2*k+1)*(2*pi/2)) && t[i]<((2*k+2)*(2*pi/2))
% y(t[i])=-1
%以上伪代码可以化简为以下的形式
%for t[i] : t
% if t[i]>=(2*k*pi) && t[i]<((2*k+1)*pi)
% y(t[i])=1
% else if t[i]>=((2*k+1)*pi) && t[i]<((2*k+2)*pi)
% y(t[i])=-1
最后,构造出方波波形的点集,这个点集中每一个点的横坐标为数组 t 的元素,对应的纵坐标为数组 f 的元素。
把这些点画出来,并用线将点连起来,线的宽度设置为2
plot(t, f, 'LineWidth', 2);
完整的代码为:
t=0:0.01:10;%生成的波形,横坐标也就是时间从0开始,到10结束,点与点的间隔为0.01。t就是相当于一个数组,[0.01, 0.02, 0.03,..., 9.98, 9.99, 10]
%以上面的数组t为横坐标,将其每一个元素代入方波公式,公式的伪代码为
%for t[i] : t
% if t[i]>=(2*k*(2*pi/2)) && t[i]<((2*k+1)*(2*pi/2))
% y(t[i])=1
% else if t[i]>=((2*k+1)*(2*pi/2)) && t[i]<((2*k+2)*(2*pi/2))
% y(t[i])=-1
%以上伪代码可以化简为以下的形式
%for t[i] : t
% if t[i]>=(2*k*pi) && t[i]<((2*k+1)*pi)
% y(t[i])=1
% else if t[i]>=((2*k+1)*pi) && t[i]<((2*k+2)*pi)
% y(t[i])=-1
%其中k为最接近t[i],且小于等于t[i]的整数
%matlab的square函数的默认周期就是2*pi,它计算一个周期波形的伪代码就是上面的伪代码逻辑
f=square(t);
plot(t, f, 'LineWidth', 2);%画出以数组t为横坐标,数组f为纵坐标组成的点,并用线将这些点连起来,线的宽度为2
axis([-1,11, -2, 3]);%设置X坐标的显示范围为[-1,11],Y坐标的显示范围为[-1,3],注意只有写在plot函数之后才会生效
运行结果
分别改变数组t元素间的step为0.2和0.5,画出波形如下
可以看到波形变斜了,这说明matlab确实是将我们生成的点集用线连起来了,要不然就是一个一个的点,看不到斜的线。
改变方波的周期或者说改变方波的频率
我们已经知道了 square 函数和 sin 函数一样,它们的默认周期都为 2*pi,也就是说方波的默认频率是 1/(2*pi) Hz
现在我们把方波的周期改为 0.2,也就是说把方波的频率改为 5Hz,我们首先要在默认频率 1/(2*pi) Hz 的基础上乘以 2*pi,得到 1Hz ,然后再乘以5, 就变成了 5Hz。方法和 sin 函数一样(原因见:matlab 生成正弦波):
f=square(2*pi*5*t);
square函数改变周期的方法是在原来的数组参数前面乘以 (2*pi*你想要的频率)
相应的,如果你想改变方波的周期为0.02,也就是说把方波的频率改为 (1/0.02)=50Hz
只需要这么写
f=square(2*pi*50*t);
完整代码如下:
t=0:0.001:1;%生成的波形,横坐标也就是时间从0开始,到10结束,点与点的间隔为0.001。t就是相当于一个数组,[0.001, 0.002, 0.003,..., 9.998, 9.999, 10.000]
f=square(2*pi*5*t);
plot(t, f, 'LineWidth', 2);%画出以数组t为横坐标,数组f为纵坐标组成的点,并用线将这些点连起来,线的宽度为2
axis([-0.1,1.2, -2, 3]);%设置X坐标的显示范围为[-0.1,1.2],Y坐标的显示范围为[-2,3],注意只有写在plot函数之后才会生效
画出的波形如下:
改变方波的上下幅度
square默认的幅度为[-1, 1],现在把幅度改为[0, 1]
f=(square(t)+1)/2;
把幅度改为[0, 3]
f=(square(t)+1)/2 * 3;
最后
以上就是贤惠小兔子为你收集整理的Matlab 生成方波信号的全部内容,希望文章能够帮你解决Matlab 生成方波信号所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复