1713573225 发表于 2015-11-12 21:10

哪位大神有三维频谱的程序呀

刚接触转子动力学哪位大神有三维频谱的程序呀用PLot3画的不胜感激

MVH 发表于 2015-11-13 09:28

三维谱图一般用waterfall绘制,参考doc waterfall
论坛相关的帖子:
http://forum.vibunion.com/thread-85126-1-1.html
http://forum.vibunion.com/thread-131371-1-1.html

1713573225 发表于 2015-11-13 10:23

谢谢现在做转子方面的要画三维频谱图频率---幅值----转速的三维频谱图 不知道怎么搞哎。。。。{:{19}:}{:{19}:}

suffer 发表于 2015-11-13 10:35

1713573225 发表于 2015-11-13 10:23
谢谢现在做转子方面的要画三维频谱图频率---幅值----转速的三维频谱图 不知道怎么搞哎。。。。{: ...

简单来说就是对每个转速下的振动数据分别做fft分析
然后用waterfall绘制三维谱图

1713573225 发表于 2015-11-13 17:19

现在就是在一个转速对应一大堆的振动数据提示数据 用plot3 和waterfall提示数据维度不一样 实在不知道怎么弄{:{19}:}

1713573225 发表于 2015-11-13 17:19

options=odeset('RelTol',1e-7);
omega=500:10:700;
tt=2*pi./omega;
for j=1;length(omega)
waitbar(j/length(omega));
=ode45(@aaafun,,zeros(16,1),options,omega(j));
n=length(x);
fs=1024;
nfft=2^nextpow2(n);
X=fft(x,nfft);
Axx=abs(X);
t1=(nfft/2-1)/nfft*fs;
waterfall(omega,t1,Axx)
end

1713573225 发表于 2015-11-14 08:06

{:{39}:}

NASA 发表于 2015-11-15 09:36

1713573225 发表于 2015-11-13 17:19
options=odeset('RelTol',1e-7);
omega=500:10:700;
tt=2*pi./omega;


参考帖子http://forum.vibunion.com/thread-42833-1-1.html
32楼waterfall的使用方法

还有帖子http://forum.vibunion.com/thread-68951-1-1.html

1713573225 发表于 2015-11-15 19:29

NASA 发表于 2015-11-15 09:36
参考帖子http://forum.vibunion.com/thread-42833-1-1.html
32楼waterfall的使用方法



不好意思还是没搞明白 plot3 (x,y,z)要求想x,y,z 的维数一样 怎么绘制随转速的三维频谱图 ?

1713573225 发表于 2015-11-15 19:29

本帖最后由 1713573225 于 2015-11-15 19:36 编辑

NASA 发表于 2015-11-15 09:36
参考帖子http://forum.vibunion.com/thread-42833-1-1.html
32楼waterfall的使用方法


不好意思还是没搞明白 plot3 (x,y,z)要求想x,y,z 的维数一样 怎么绘制随转速的三维频谱图 ?其他的贴子我也看了 有一个很好但是核心的东西被删掉了。

NASA 发表于 2015-11-17 08:41

基本思路:
1. 分别计算或这采集获得各个转速下的时间序列
2. 对每个转速下的时间序列分别进行fft分析,得到其频谱信息
3. 将对应的转速列作为第三维数据坐标,采用waterfall绘图

1713573225 发表于 2015-11-17 09:30

NASA 发表于 2015-11-17 08:41
基本思路:
1. 分别计算或这采集获得各个转速下的时间序列
2. 对每个转速下的时间序列分别进行fft分析, ...

好的明白了已经做的差不做了 在验证程序谢谢了

sovereign 发表于 2015-11-19 10:46

一个绘制三维谱图的程序
function []=waterpic(axis,nindex,speed,nn,wx,wy,wz)
% 此程序产生瀑布图,瀑布图三维分别为频率,转速,频率幅值
% 需要事先提供频谱数据
% dir=cd;
% speed=;%这里插入转速工况
% naxis=2;%轴数
% nindex=2;%每个轴的端面数
% nn=3;%一个端面上的通道数,不计扭振
tame=1;%存放文件名的循环参数
tama=1;%导出文件名的循环参数
%导入频谱数据
for i=1:axis
for j=1:nindex
    for tama=1:nn
      for k=1:length(speed)
      aa{1,tame}=[num2str(i),'-',...
            num2str(j),'-',num2str(speed(1,k))];
      ab{1,tame}=[num2str(i),'-',...
            num2str(j)];
filename=;
fid=char(filename);
ss1=csvread(fid);%读数据
ss(:,tame)=csvread(fid,0,tama,);%读数据
%ss数据的意义是:按照轴号、通道号,提取了某个端口所有工况下的频率值
%ss的列数为工况数*(轴号*通道号),这样就得到了z轴的数据
%z的数据有点不同于其他。按照通道来说,它的排列是1-4-9-12-2-5-10-13-3-6-11-14
tame=tame+1;
      end
    end
end
end

ss0=ss1(:,1);%读频率数据
=meshgrid(ss0,speed');
%设置图片大小等格式
pn={'Color','Position'};
pv={'white',};
h=figure(pn,pv);

% 绘制、保存瀑布图
tas={'H','V','L'};
for tap=1:axis
    for tab=1:nindex
      for tema=1:nn
            sss=ss(:,1+(tema-1)*(size(speed,1))+...
                (tab-1)*(size(speed,1))+(tap-1)*nindex*(size(speed,1)):...
                tema*(size(speed,1))+...
                (tab-1)*(size(speed,1))+(tap-1)*nindex*(size(speed,1)));
sss=sss';
waterfall(ss0,speed,sss);%
xlim(wx);
ylim(wy);
zlim(wz);
xlabel('Hz');ylabel('rpm');zlabel('\mum');
pf=;
pf=char(pf)';
saveas(h,pf,'bmp');
      end
    end
end
close(h)

鱼音rao梁 发表于 2015-11-28 18:10

一般有直接画三维频谱图的函数,像HHT变换三维频谱图,工具箱有函数
页: [1]
查看完整版本: 哪位大神有三维频谱的程序呀