我是靠谱客的博主 贤惠小兔子,最近开发中收集的这篇文章主要介绍Matlab 生成方波信号,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用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,画出波形如下
step为0.2
step为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 生成方波信号所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部