最近电赛培训需要对方波进行傅里叶变换求谐波频率及幅度,因为各种误差需要对单片机得到的结果再乘以一个系数来补偿,所以需要matlab来模拟生成方波看不同输入幅值时准确的谐波幅度,得到的结果却一直都不对

问题:频率为1kHz的方波,用8kHz采样,画出图像不是50%方波

错误做法:

Fs=8000;%采样频率 N=1024; %采样点数 n=0:N-1; t=0:N-1; k=1;%调整方波幅度 x=0.5*k+0.5*k*square(2*pi*1000*t/Fs,50); %注意不能是1000 subplot(2,1,1) stem(t,x); axis([0 50 -inf inf]); xfft=fft(x,N); subplot(2,1,2) f=n*Fs/N; %转换位频率 Amp=abs(xfft)*2/N; stem(f,Amp);

可以看到上图的时域和频域图像都正确,没有生成50%占空比的方波。如图所示,虚线部分就是不确定的状态,可能为上面也可能为下面,所以就导致了上述结果

解决:信号频率改为1000.1即可

Fs=8000;%采样频率 N=1024; %采样点数 n=0:N-1; t=0:N-1; k=1;%调整方波幅度 x=0.5*k+0.5*k*square(2*pi*1000.1*t/Fs,50); %注意不能是1000 subplot(2,1,1) stem(t,x); axis([0 50 -inf inf]); xfft=fft(x,N); subplot(2,1,2) f=n*Fs/N; %转换位频率 Amp=abs(xfft)*2/N; stem(f,Amp); 最近电赛培训需要对方波进行傅里叶变换求谐波频率及幅度,因为各种误差需要对单片机得到的结果再乘以一个系数来补偿,所以需要matlab来模拟生成方波看不同输入幅值时准确的谐波幅度,得到的结果却一直都不对问题:频率为1kHz的方波,用8kHz采样,画出图像不是50%方波错误做法:clc;Fs=8000;%采样频率N=1024; %采样点数n=0:N-1;t=0:N-1; k=1;%调整方波幅度x=0.5*k+0.5*k*square(2*pi*1000*t/Fs,50); %注意不能
squa re(T) 函数 产生 一个2*pi为周期的 方波 ,范围在-1到1之间,占空比为 50 %。很像sin 函数 ,比如sin 函数 输入pi/6 就是1/2,输入pi/2 就是1,输入pi就是0,输入3/2*pi就是-1;而 squa re也是一样,输入的数小于pi,就是1,大于pi小于2*pi就是-1。 squa re(T, duty), duty是一个百分数,duty = 75(75%的占空比)。如图第一
t = linspace(-2*pi,2*pi,1 50 );%1 50 是从-2π到2π取1 50 个点,可取其他数字,不写默认为100 x = squa re(2*t);%数字2可改变 方波 的周期。另外可 squa re(2*t,75)改变 方波 占空比,使得 方波 正的部分的占空比为75% plot(t/pi,x) grid on t的区间内取点个数越大 方波 越正,默认为100的时候有点斜。 t = linspace(-2*pi,2* 信号 处理的宗旨是将 信号 中蕴含的信息变得显然,其中的转变就包括映射(mapping)和变换(transform)。常见的就是时域和频域的转变,时域表示 信号 时时间的 函数 ,时间维度表征 信号 ;频域通常包含傅里叶变换,频率维度表征 信号 。 一. 生成 方波 以及仿真不同的周期 MATLAB 代码: 运行结果: 对结果的解释: t在取点时,个数越多 方波 越正 squa re 函数 内,系数变大,周期变小 二. 方波 的频谱与谱线 MATLAB 代码: 运行结果: 对结果的解释:系数越大,周期越小,频谱分.
可以使用 MATLAB 中的 ` squa re` 函数 来生成 方波 信号 。这个 函数 的第一个参数是 信号 的频率,第二个参数是占空比,取值范围为 0 到 100。因此,您可以使用以下代码生成频率为 50 Hz,占空比为 50 % 的 方波 信号 : ``` matlab f = 50 ; % 频率为 50 Hz duty = 50 ; % 占空比为 50 % t = 0:1/(10*f):1/f; % 采样时间点 y = squa re(2*pi*f*t, duty); % 生成 方波 信号 plot(t, y); % 绘制 信号 图形 xlabel('Time (s)'); ylabel('Amplitude'); title(' 50 Hz Squa re Wave with 50 % Duty Cycle'); 这段代码会生成一个时间长度为 1 秒的 方波 信号 ,并将其绘制出来。您可以根据需要修改采样时间点的间隔,以获得所需的时间分辨率。