matlab求出过冲的最大幅值,频谱分析为什么最大幅值处频率为0?

这是我的程序

function [wa]=Wa0(x0,y0)

syms t tao

[m,~]=size(x0);  %求xx的维数

xx=0:0.001:13;  %定义绘图坐标轴

t=0:0.001:13;

plot(x0,y0,'*');

hold on;

fs=2000;N=20000;   %采样频率和数据点数

n=0:N-1;

t=n/fs;   %时间序列

%x=y0; %信号

W1=detrend(y0); % 消除时间序列中的线性趋势项

W1=detrend(W1,'constant'); % 消除时间序列中的均值

subplot(2,2,1),plot(x0,W1,'*');

yy=fftshift(fft(W1,N));    %对信号进行快速Fourier变换

mag=abs(yy);     %求得Fourier变换后的振幅

mag=mag/(N/2);   %换算成实际的幅度

mag(1)=mag(1)/2;

f=(-N/2:N/2-1)*fs/N;%进行对应的频率转换

subplot(2,2,2),plot(f,mag);   %绘出随频率变化的振幅

xlabel('频率/Hz');

ylabel('振幅');grid on;

subplot(2,2,3),plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅

xlabel('频率/Hz');

ylabel('振幅');

title('振幅-频率曲线图');grid on;

Pyy=[1:N/2];

for i=1:N/2

Pyy(i)=phase(yy(i)); %计算相位

Pyy(i)=Pyy(i)*180/pi; %换算为角度

end;

subplot(2,2,4),plot(f(1:N/2),Pyy(1:N/2));   %显示相位图

title('相位-频率曲线图');

xlabel('相位/度');

ylabel('振幅');grid on;

1.jpg

(169.4 KB, 下载次数: 6)

2015-10-14 11:13 上传

b4d287d1aacbf0cf95a77c41289acfe6.gif

c5006d1a5b4047f80d42a7082635a87b.gif

e68c0b2bbea401472b34f28b331b5d81.png

a8653116edfbd44ab0b5698603ccc300.gif

2015-10-14 11:12 上传

点击文件名下载附件

2.81 MB, 下载次数: 40

* file_name) { FILE* fp = fopen(file_name, "r"); if (fp == NULL) { printf("Failed吉普斯现象在信号处理中是很常见的,对于周期矩形脉冲信号,也会出 to open file %s\n", file_name); return; } fscanf(fp, "%d", &org_num); for (现过冲现象。我们可以通过编写程序计算出过冲的最大幅,具体的步骤如int i = 0; i < org_num; i++) { ClubOrg org; fscanf(fp, "%[^|]|%[^|]|%[^\n]\n", org.name, org.function, org.contact); org_list[i] = org; } 下: 1. 定义周期矩形脉冲信号: ``` T = 1; % 周期 t = -T fclose(fp); } void save_sponsor_info(const char* file_name) { FILE* fp = fopen(file_name, "w"); /2:0.001:T/2; % 时间范围 x = rectpuls(t,T); % 周期矩形脉 if (fp == NULL) { printf("Failed to open file %s\n", file_name); return; } fprintf(fp冲信号 ``` 2. 计算傅里叶级数系数: ``` N = 50; % 级数 , "%d\n", sponsor_num); for (int i = 0; i < sponsor_num; i++) { fprintf(fp,a0 = 1/T * trapz(t,x); % a0系数 an = zeros(1,N); % an系数 "%s|%s|%s\n", sponsor_list[i].name, sponsor_list[i].contact_person, sponsor_list[i].contact); } bn = zeros(1,N); % bn系数 for n = 1:N an(n) = 2/T * fclose(fp); } void load_sponsor_info(const char* file_name) { FILE* fp = fopen(file_name, "r"); trapz(t,x.*cos(2*pi*n/T*t)); % an计算公式 bn(n) = 2/T * if (fp == NULL) { printf("Failed to open file %s\n", file_name); return; } fscanf trapz(t,x.*sin(2*pi*n/T*t)); % bn计算公式 end ``` 3. 计算傅(fp, "%d", &sponsor_num); for (int i = 0; i < sponsor_num; i++) { ClubSponsor sponsor; fscanf(fp, "%[^|]|%[^|]|%[^\n]\n", sponsor.name, sponsor.contact_person,里叶级数的幅度谱: ``` f = -N/T:N/T; % 频率范围 X = a0 sponsor.contact); sponsor_list[i] = sponsor; } fclose(fp); } ``` 这样,我们就实现了所有/2 + an.*cos(2*pi*f*T) + bn.*sin(2*pi*f*T); % 傅里叶级数幅的功能,并将所有的信息保存在硬盘中。当需要使用这些信息时,可以从文件中读取。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值