声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1221|回复: 5

[综合讨论] matlab谐次图程序怎么编啊,急

[复制链接]
发表于 2009-6-13 11:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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);
回复
分享到:

使用道具 举报

发表于 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 编辑 ]
 楼主| 发表于 2009-6-14 01:58 | 显示全部楼层

回复 沙发 yelv123 的帖子

是啊,不是要对每个转速每个谐次进行取点吗,我在这个转速下对这个谐次在频率f(j,i)处取点。
测声压的时候是转速从底到高连续采样,从1200r/min到5800r/min。
发表于 2009-6-14 08:58 | 显示全部楼层
原帖由 hdylwho 于 2009-6-14 01:58 发表
是啊,不是要对每个转速每个谐次进行取点吗,我在这个转速下对这个谐次在频率f(j,i)处取点。
测声压的时候是转速从底到高连续采样,从1200r/min到5800r/min。

可以和总谐次的声压级对比如何?
 楼主| 发表于 2009-6-14 16:02 | 显示全部楼层

回复 地板 yelv123 的帖子

不太明白您的意思,
另外,当时测出的数据是声压和转速两列数据,数据是老师给的,可是转速的电压信号有正有负,不清楚这是为什么?然后老师让我只用第一列数据,转速就用1200r/min到5800r/min,步长为50这样的数据算,我总觉得用这个转速数据不行。
发表于 2009-6-14 18:49 | 显示全部楼层
个人想法, 若数据档案不大的话, 考虑上传, 方便别人试试!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-15 11:54 , Processed in 0.054274 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表