马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
clear
clc
close all hidden
format long
%%%%%%%%%%%%%%%%%%%%%
fni=input('随即信号谱分析-输入数据文件名:','s');
fid=fopen(fni,'r');
fun=fscanf (fid,'%d',1);
sf=fscanf (fid,'%f',1);
nfft=fscanf (fid,'%d',1);
win=fscanf (fid,'%d',1);
fno=fscanf (fid,'%s',1);
a=fscanf (fid,'%f',[2,inf]);
status=fclose (fid);
x=a (1,:);
y=a (2,:)-a (1,:);
f=0: sf/nfft:sf/2-sf/nfft;
switch win
case 1
w=boxcar(nfft);
case 2
w=hanning(nfft);
case 3
w=hamming(nfft);
case 4
w=blackman (nfft);
case 5
w=triang(nfft);
otherwise
w=boxcar(nfft);
end
switch fun
case 1
z=psd(x,y,nfft,sf,w,nfft/2);
case 2
z=csd(x,y,nfft,sf,w,nfft/2);
case 3
z=tfe(x,y,nfft,sf,w,nfft/2);
case 4
z=cohere(x,y,nfft,sf,w,nfft/2);
otherwise
;
end
nn=1:nfft/4;
subplot(2,1,1);
plot (f(nn),abs(z(nn)));
xlabel('频率(Hz)');
ylabel('幅值');
grid on;
if fun>1&fun<4
subplot(2,1,2);
plot (f(nn),abs(z(nn)));
xlabel('频率(Hz)');
ylabel('相位');
grid on;
end
fid=fopen(fno,'w');
if fun>1&fun<4
for k=1:nfft/2
fprintf(fid,'%f%f\n',f(k),abs(z(k)));
end
else
for k=1;nfft/2
fprintf(fid,'%f%f%f\n',f(k),real(z(k)),imag(z(k)));
end
status=fclose(fid);
end |