hdylwho 发表于 2009-6-13 11:10

matlab谐次图程序怎么编啊,急

matlab谐次图程序怎么编啊,现有的数据是转速和声压,我编了一个,可是结果不对,所有谐次的幅值都很大,这是为什么啊,
程序如下:function orderfig
=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=;leng=length(n);
v=;
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;
fori=1:12;
plot(n,La(:,i),'color',);      %'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);

yelv123 发表于 2009-6-13 22:17

p(j,i)=2^(-1/2)*interp1(f,mag,f1(j,i),'linear');   %取该点频率幅值有效值
这里的mag应该是总的声压吧。

问个问题,你们是怎么测试的
从低到高拉一遍还是对一些固定转速测试声压?

[ 本帖最后由 yelv123 于 2009-6-13 22:33 编辑 ]

hdylwho 发表于 2009-6-14 01:58

回复 沙发 yelv123 的帖子

是啊,不是要对每个转速每个谐次进行取点吗,我在这个转速下对这个谐次在频率f(j,i)处取点。
测声压的时候是转速从底到高连续采样,从1200r/min到5800r/min。

yelv123 发表于 2009-6-14 08:58

原帖由 hdylwho 于 2009-6-14 01:58 发表 http://www.chinavib.com/forum/images/common/back.gif
是啊,不是要对每个转速每个谐次进行取点吗,我在这个转速下对这个谐次在频率f(j,i)处取点。
测声压的时候是转速从底到高连续采样,从1200r/min到5800r/min。
可以和总谐次的声压级对比如何?

hdylwho 发表于 2009-6-14 16:02

回复 地板 yelv123 的帖子

不太明白您的意思,
另外,当时测出的数据是声压和转速两列数据,数据是老师给的,可是转速的电压信号有正有负,不清楚这是为什么?然后老师让我只用第一列数据,转速就用1200r/min到5800r/min,步长为50这样的数据算,我总觉得用这个转速数据不行。

ChaChing 发表于 2009-6-14 18:49

个人想法, 若数据档案不大的话, 考虑上传, 方便别人试试!
页: [1]
查看完整版本: matlab谐次图程序怎么编啊,急