realhappy 发表于 2006-11-7 14:44

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;

yangzj 发表于 2006-11-7 18:27

呵呵,这两天在弄labview
正在编一个细化解调
对于labview里面的数据组织还不是很明白,因此做数据处理的时候有点掌控不了
正研究

这个很有挑战性,呵呵!

[ 本帖最后由 realhappy 于 2006-11-7 19:41 编辑 ]

yangzj 发表于 2006-11-7 21:28

呵呵,搞定

realhappy 发表于 2006-11-7 21:31

原帖由 yangzj 于 2006-11-7 21:28 发表
呵呵,搞定
恭喜,呵呵,不容易啊!两种程序能传上来,大家学习学习!

marere_re 发表于 2006-11-8 09:18

REALHAPPY斑竹,其实要讲求方便,其实NI的软件做的很好的,他的那个高级信号处理包里,什么细化谱,倍频谱的函数都有的,还有时频分析,只不过这方面的资料太少,研究起来有点困难而已

FtpAdmin 发表于 2006-11-8 09:21

原帖由 yangzj 于 2006-11-7 21:28 发表
呵呵,搞定

希望能够共享一下

realhappy 发表于 2006-11-8 09:28

原帖由 marere_re 于 2006-11-8 09:18 发表
REALHAPPY斑竹,其实要讲求方便,其实NI的软件做的很好的,他的那个高级信号处理包里,什么细化谱,倍频谱的函数都有的,还有时频分析,只不过这方面的资料太少,研究起来有点困难而已
我有高级信号处理包5.0的,里面的细化谱等都是很复杂,运行效率比较底,小波分析也不是很好用,你给的小波降噪还运行不了,如果自己有时间的话,最好还是自己写程序,一来可以按照自己的要求写,二来可以很快熟悉算法和使用要求。

pigmin 发表于 2006-11-9 10:22

入门中多赐教

syg9696 发表于 2006-11-9 19:27

目前还没有学到那么深,努力!
页: [1]
查看完整版本: matlab和labview编程的区别