马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我用Matlab作了分析,但是效果不好。Matlab学的不怎么好,哪位大神可以帮忙看看,感激不尽。
下面是我的Matlab程序,看看能修改下吗?
clear;clc;
%时间维度傅里叶变换
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a=load('3d_9saomiaoyu_1.csv');
delta_t=2e-7;%采样间隔
T=1e-4;%采样长度
t=0:delta_t:T;%时域采样点
L=length(t);
n=2^nextpow2(L);
fs=1/delta_t;%采样频率
delta_f=1/T;%频率间隔
f=fs*((0:n-1))/n;
%f=0:delta_f:fs;%频域采样点
%对所有点的时间维度作傅里叶变换,得到u(x,y,f)
for i=1:5776
b(i,:)=fft(a(i,:),n);
A(i,:)=abs(b(i,:));%取模值
end
%plot(f,abs(b));
%波场数据处理
%A=load('3d_9saomiaoyu_1.csv');%0—0.15m范围(x,y)点在不同时刻下Z方向的位移值
%获取不同时刻下的波场数据
%for i=1:201%时间间隔为5e-7
for l=1:512%时间间隔为2e-7
c_l=A(:,l);%提取i时刻不同点的位移值
g{l}=reshape(c_l,76,76);%将矩阵c_i重排成76*76的二维矩阵,并置于元胞数组内
end
%C=zeros(76,76,201);
C=zeros(76,76,512);
for k=1:512
C(:,:,k)=g{k};
end
%波场绘图
delta_y=2e-3;
Y=0.15;
y=0:delta_y:Y;
x_start=0;
X=0.15;
L=length(y);%信号空域长度
delta_x=2e-3;
x=x_start+(0:L-1)*delta_x;
a2=abs(C(:,:,29));
figure;
imagesc(x,y,a2);
set(gca,'Ydir','normal')
title('250kHz时的波场图')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%空间—波数变换
Ks_x=1/X;%采样波数1
Ks_y=1/Y;%采样波数2
L1=length(y);%信号空域长度
NFFT=2^nextpow2(L1);
A2=fft2(a2,NFFT,NFFT);%傅里叶变换
kx=Ks_x/2*linspace(0,1/delta_x,NFFT/2+1);
ky=Ks_y/2*linspace(0,1/delta_y,NFFT/2+1);
S=abs(A2);
%D=C(:,1:129);
figure;
imagesc(S);
set(gca,'Ydir','normal');
%D=fftshift(S);
%imagesc(kx,ky,D);
%set(gca,'Ydir','normal');
|