马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
matlab谐次图程序怎么编啊,现有的数据是转速和声压,我编了一个,可是结果不对,所有谐次的幅值都很大,这是为什么啊,
程序如下:function orderfig
[filename,filepath]=uigetfile(...
{'*.txt;*.dat;*.mat','所有数据文件 (*.txt,*.dat,*.mat)';
'*.txt','TXT 文件 (*.txt)';...
'*.dat','DATA 文件 (*.dat)';...
'*.mat','MAT 文件 (*.mat)';...
'*.*','所有 文件 (*.*)'});
fid=fopen(filename,'rb');
temp1=fscanf(fid,'%e',inf);
fclose(fid);
save temp1; fname=filename;
sam=temp1;
p0=0.00002; fs=40000;
n=[1200:50:5800]; leng=length(n);
v=[1 6 10 12 16 18 20 24 30 32 36 38];
stan=zeros(length(n),1); %标准曲线
for j=1:leng;
if n(j)<2500
stan(j,1)=69;
end;
if n(j)>=2500 && n(j)<5000
stan(j)=78;
end;
if n(j)>=5000
stan(j)=84;
end;
end;
figure('name','谐次图','numbertitle','off');
plot(n,stan(:,1),'k'); hold on; %绘制标准曲线
b=sam(:,1);
y=fft(b);
mag=abs(y)*2/length(y);
mag=mag(1:length(y)/2);
f=fs*(0:length(y)/2-1)/length(y);
% i=11;
for j=1:length(n);
for i=1:12
f1(j,i)=v(i)*n(j)/60; %每个谐次下的频率
p(j,i)=2^(-1/2)*interp1(f,mag,f1(j,i),'linear'); %取该点频率幅值有效值
La(j,i)=20*log10(p(j,i)/p0); %幅值转换成A声级
end;
end;
save La;
for i=1:12;
plot(n,La(:,i),'color',[rand(1),rand(1),rand(1)]); %'overall',
hold on;
legend('standard','ord-1','ord-6','ord-10','ord-12',....
'ord-16','ord-18','ord-20','ord-24','ord-30','ord-32','ord-36','ord-38');
end
xlabel('转速(n)'); ylabel('A声级(dB)'); title(filename); |