matlab和labview编程的区别
这是一个用matlab编写的程序,很多是用循环处理的,用labview处理难度就大了,嘿嘿,不服的写写看!%ZoomFFT谱
%x-信号序列
%fs-采样频率
%N-做谱点数
%fe-分析中心频率
%D-细化倍数
%L-平均段数
%M-滤波器半阶数
%f-返回频率向量
%xz-返回幅值谱
function =ZoomFFT(x,fs,N,fe,D,L,M)
k=1:M;
w=0.5+0.5*cos(pi*k/M); %Hanning窗
fl=max(fe-fs/(4*D),-fs/2.2);
fh=min(fe+fs/(4*D),fs/2.2);
yf=D*fl; %移频量
df=fs/D/N;
f=fl:df:fl+(N/2-1)*df;
xz=zeros(1,N/2);
wl=2*pi*fl/fs;
wh=2*pi*fh/fs;
hr(1)=(wl-wh)/pi;
hr(2:M+1)=(sin(wl*k)-sin(wh*k))./(pi*k).*w;
hi(1)=0;
hi(2:M+1)=(cos(wl*k)-cos(wh*k))./(pi*k).*w;
k=0:N-1;
w=0.5-0.5*cos(2*pi*k/N);
for i=1:L
for k=1:N
kk=(k-1)*D+M+(i-1)*N;
xrz(k)=x(kk+1)*hr(1)+sum(hr(2:M+1).*(x(kk+2:kk+M+1)+x(kk:-1:kk-M+1)));
xiz(k)=x(kk+1)*hi(1)+sum(hi(2:M+1).*(x(kk+2:kk+M+1)-x(kk:-1:kk-M+1)));
end
xzt=(xrz+j*xiz).*exp(-j*2*pi*(0:N-1)*yf/fs);
xzt=xzt.*w;
xzt=xzt-sum(xzt)/N;
xzt=fft(xzt);
xz=xz+(abs(xzt(1:N/2))/N*2).^2;
end
xz=(xz/L).^0.5; 呵呵,这两天在弄labview
正在编一个细化解调
对于labview里面的数据组织还不是很明白,因此做数据处理的时候有点掌控不了
正研究
这个很有挑战性,呵呵!
[ 本帖最后由 realhappy 于 2006-11-7 19:41 编辑 ] 呵呵,搞定 原帖由 yangzj 于 2006-11-7 21:28 发表
呵呵,搞定
恭喜,呵呵,不容易啊!两种程序能传上来,大家学习学习! REALHAPPY斑竹,其实要讲求方便,其实NI的软件做的很好的,他的那个高级信号处理包里,什么细化谱,倍频谱的函数都有的,还有时频分析,只不过这方面的资料太少,研究起来有点困难而已 原帖由 yangzj 于 2006-11-7 21:28 发表
呵呵,搞定
希望能够共享一下 原帖由 marere_re 于 2006-11-8 09:18 发表
REALHAPPY斑竹,其实要讲求方便,其实NI的软件做的很好的,他的那个高级信号处理包里,什么细化谱,倍频谱的函数都有的,还有时频分析,只不过这方面的资料太少,研究起来有点困难而已
我有高级信号处理包5.0的,里面的细化谱等都是很复杂,运行效率比较底,小波分析也不是很好用,你给的小波降噪还运行不了,如果自己有时间的话,最好还是自己写程序,一来可以按照自己的要求写,二来可以很快熟悉算法和使用要求。 入门中多赐教 目前还没有学到那么深,努力!
页:
[1]