mengweilm425 发表于 2011-11-5 21:41

求助matlab谱分析方法,等待大虾!

我这有一个波浪谱,我把它转化成了时间域的信号,然后想再把这个时间域的信号转为波浪谱,为什么回不去啊,程序如下
clear all

g=9.8;            % 加速度
h=7;                % 有义波高
A=8.1*10^(-3)*g*g;% 参数A   
B=3.11/(h*h);       % 参数B

w_max=4.5;      % 最大频率
w_min=0.2;      % 最小频率
w_m1=0.4;
w_m2=0.7;
dw1=(w_m1-w_min)/128; % 频率分为128份
dw2=(w_m2-w_m1)/256;% 频率分为256份
dw3=(w_max-w_m2)/128;% 频率分为128份

wi1=w_min;   % 初始频率1
wi2=w_m1;   % 初始频率2
wi3=w_m2;   % 初始频率3

z_t1=0;
z_t2=0;
z_t3=0;
wspan=w_min:0.01:w_max;
s_span=A*wspan.^(-5).*exp(-B*wspan.^(-4));
subplot(5,1,1);
plot(wspan,s_span)
subplot(5,1,2);
plot(wspan/(2*pi),s_span)


Fs = 16;%采样周期
T = 1/Fs;
N = 2048;
t = (0:N-1)*T;

for i=1:128
    s=A*wi1^(-5)*exp(-B*wi1^(-4));       % 每一频率处的波能谱
    zta=sqrt(2*s*dw1);               % 波幅
    z=zta*cos(wi1*t+2*pi*randn);
    z_t1=z_t1+z;
    wi1=wi1+dw1;
end

for i=1:256
    s=A*wi2^(-5)*exp(-B*wi2^(-4));       % 每一频率处的波能谱
    zta=sqrt(2*s*dw2);               % 波幅
    z=zta*cos(wi2*t+2*pi*randn);
    z_t2=z_t2+z;
    wi2=wi2+dw2;
end

for i=1:128
    s=A*wi3^(-5)*exp(-B*wi3^(-4));       % 每一频率处的波能谱
    zta=sqrt(2*s*dw3);               % 波幅
    z=zta*cos(wi3*t+2*pi*randn);
    z_t3=z_t3+z;
    wi3=wi3+dw1;
end

z_t=z_t1+z_t2+z_t3;
subplot(5,1,3);
plot(t,z_t)
%axis()

= xcorr(z_t,'unbiased');
subplot(5,1,4);
plot(lag3/Fs,cor3),title('随机信号自相关函数');
Xk3 = fft(cor3)/N/2;
k = (0:N/2-1)*Fs/N;   % kmax = (N/2)*Fs/N = Fs/2(Nyquist), Fs/N为频率分辨率
subplot(5,1,5);
plot(k,2*Xk3(1:N/2));xlabel('Frequency(Hz)');ylabel('|Y|');
axis()
页: [1]
查看完整版本: 求助matlab谱分析方法,等待大虾!