tmzl 发表于 2006-3-27 14:16

sealily 发表于 2006-3-29 16:23

程序中多使用的imagesc这个函数作图
但是图是个平面图,色度的变化表示z值的大小
不知道立体的三维图怎样做?
有哪位高手指点一下?谢了

simon21 发表于 2006-3-31 08:14

回复:(tmzl)请问:在matlab中用什么函数画时频分析...

是做三维谱图吗?用waterfall不错

eletters 发表于 2006-5-13 22:53

surfl

zhyuer 发表于 2006-5-18 15:30

没有直接的函数画,需要自己编成。短时傅立叶变换,gabor变换和WD变换都可以
%%短时傅立叶变换
%解析信号x=exp(j*pi*k*t.^2)
clear,clc,close all
figure(1)
k=4;T=5;
fc=k*T;
fs=3*fc;
Ts=1/fs;
N=T/Ts;
x=zeros(1,N);
t=0:N-1;
x=exp(j*k*pi*(t*Ts).^2);
% x=awgn(x,-3,'measured');
subplot(221)
plot(t*Ts,real(x))
X=fft(x);
X=fftshift(X);
subplot(222)
plot((t-N/2)*fs/N,abs(X))
Nw=20;
L=Nw/2;
Tn=(N-Nw)/L+1;
nfft=32;
TF=zeros(Tn,nfft);
for i=1:Tn
    xw=x((i-1)*10+1:i*10+10);
    temp=fft(xw,nfft);
    temp=fftshift(temp);
    TF(i,:)=temp;
end
subplot(223)
fnew=((1:nfft)-nfft/2)*fs/nfft;
tnew=(1:Tn)*L*Ts;
=meshgrid(fnew,tnew);
mesh(F,T,abs(TF))
subplot(224)
contour(F,T,abs(TF))

%用WD变换解析信号x=exp(j*pi*k*t.^2)
clear,close all
k=4;T=4;
fc=k*T;fs=4*fc;%采样频率大于4倍的信号宽度
Ts=1/fs;N=T/Ts;
x=zeros(1,N);
t=0:N-1;
x=exp(j*k*pi*(t*Ts).^2);
subplot(221),plot(t*Ts,real(x));
X=fftshift(fft(x));
subplot(222),plot((t-N/2)*fs/N,abs(X))
R=zeros(N);
for n=0:N-1
    M=min(n,N-1-n);
    for k=0:M
      R(n+1,k+1)=x(n+k+1)*conj(x(n-k+1));
    end
    for k=N-1:-1:N-M
      R(n+1,k+1)=conj(R(n+1,N-k+1));
    end
end
TF=zeros(N);
for n=0:N-1
   temp=fftshift(fft(R(n+1,:)));
   TF(n+1,:)=temp;
end
fnew=(t-N/2)*fs/2/N;
tnew=(0:N-1)*Ts;
=meshgrid(fnew,tnew);
subplot(223),mesh(F,T,abs(TF))
subplot(224),contour(F,T,abs(TF))

[ 本帖最后由 yejet 于 2006-7-9 17:40 编辑 ]

yanyu77 发表于 2006-6-16 12:58

本帖最后由 wdhd 于 2016-9-13 13:50 编辑

  我用mesh和surf、plot3试过,可是就是觉得不对

  

qiuqia17 发表于 2006-6-16 20:24

本帖最后由 wdhd 于 2016-9-13 13:50 编辑

  mesh 就可以 转一转就行啊~~ 有什么要求?

minnieme 发表于 2006-6-20 15:52

回复:(zhyuer)没有直接的函数画,需要自己编成。短...

本帖最后由 wdhd 于 2016-9-13 13:50 编辑

  在短时傅立叶方法中,nfft取32有什么依据吗

kmgary 发表于 2006-6-24 20:48

可参考matlab自带的有关STFT的演示程序!

kingsword1 发表于 2006-10-19 18:34

请问楼上的程序中NW是什么含义?
Nw=20;
L=Nw/2;
Tn=(N-Nw)/L+1;
nfft=32;
TF=zeros(Tn,nfft);
for i=1:Tn
    xw=x((i-1)*10+1:i*10+10);
    temp=fft(xw,nfft);
    temp=fftshift(temp);
    TF(i,:)=temp;
end
以上这段程序怎么解释?我也想弄个三维图,谢谢!

hyl2323 发表于 2006-10-19 22:03

http://forum.vibunion.com/forum/thread-28698-1-1.html
有程序下载,我自己编写的

liyonglong 发表于 2008-11-26 12:28

回复 5楼 zhyuer 的帖子

很不错!支持!
页: [1]
查看完整版本: 请问:在matlab中用什么函数画时频分析中的三维图