声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

楼主: hyl2323

[其他] 画信号三维图的matlab函数(自编原创)

  [复制链接]
发表于 2011-7-25 20:25 | 显示全部楼层
好东西。收了
回复 支持 反对
分享到:

使用道具 举报

发表于 2011-8-1 17:48 | 显示全部楼层
回复 1 # hyl2323 的帖子

x轴是时间,y轴与z轴分别是信号的频率与幅值吗?
发表于 2011-8-2 08:39 | 显示全部楼层
回复 22 # zhangshun5233 的帖子

这个论坛里面教你画三维的很多,你可以好好嗖嗖,时间可以是点数,也可以就是时间,频率是你的分析频率,纵坐标是幅值
发表于 2011-10-17 21:54 | 显示全部楼层
我想画一个hht谱的二维图,横坐标为时间,纵坐标为频率(也就是说去掉原来hht中用颜色表示能量的那一维),哪位高手指点一下。
发表于 2011-10-18 14:58 | 显示全部楼层
回复 19 # 月生才 的帖子

直接使用工具箱就可以实现的
发表于 2011-10-19 10:20 | 显示全部楼层
我就是不知道具体使用哪个函数。我贴上我的程序,请你帮我看一下:
clear;close all;
fs=400;
y=linspace(1,2,500);

t=1:500;
t=t*1/400;
x1=sin(2*pi*20*t);
x2=0.4*sin(2*pi*100*t+140+pi/2);

for i=1:10              %信号加噪
    x1(i+100)=x1(i+100)+x2(i)
    x1(i+200)=x1(i+200)+x2(i)
    x1(i+300)=x1(i+300)+x2(i)
end

s=x1 ;  
plot(s);                %绘制加噪后的信号

imf=emd(s);             %信号分解
[A,f,t]=hhspectrum(imf);%处理IMF分量——求瞬时频率与振幅;
                        %A:每个imf的振幅向量;
                        %f:每个imf对应的瞬时频率;
[E,t,Cenf]=toimage(A,f);%继续处理IMF分量——合成每个IMF信号,求取Hilbert谱;
                        %E:振幅值;
                        %Cenf:每个网络对应的中心频率
                        
%----------时频图------------------                        
disp_hhs(E);            %画希尔伯特谱
title('希尔伯特谱');   
发表于 2011-10-26 20:43 | 显示全部楼层
回复 1 # hyl2323 的帖子

good!
thx!~
发表于 2011-11-12 14:36 | 显示全部楼层
好东西,谢楼主
发表于 2011-11-15 14:47 | 显示全部楼层
好,谢谢
发表于 2011-12-3 21:13 | 显示全部楼层
我的图怎么右下角那个竖线怎么画不出来啊?
就是“myimage”这个函数
发表于 2011-12-3 21:15 | 显示全部楼层

                               
登录/注册后可看大图


figure;
myimage(E,'3D');
右下角的竖线怎么没画出来呢?
function h=myimage(dummyCoefs,plotmode,cmap)
%   MYIMAGE 3-D visualization of coefficients.
%   DUMMYCOEFS is the coefficients matrix to be visualized.
%   Coefficients are colored using PLOTMODE.
%   PLOTMODE = 'lvl' (By scale) or
%   PLOTMODE = 'glb' (All scales) or
%   PLOTMODE = 'abslvl' or 'lvlabs' (Absolute value and By scale) or
%   PLOTMODE = 'absglb' or 'glbabs' (Absolute value and All scales)
%
%   MYIMAGE(...,'plot') is equivalent to MYIMAGE(...,'absglb')
%
%   You get 3-D plots (surfaces) using the same keywords listed
%   above for the PLOTMODE parameter, preceded by '3D'. For example:
%   MYIMAGE(...,'3Dplot') or MYIMAGE(...,'3Dlvl').
%   H is the figure handle.
%----------------------------------------------------------------------
if nargin==1
    plotmode='plot';
    cmap=colormap(jet(240));
end
if nargin==2
    cmap=colormap(jet(240));
end
NBC = 240;
if strmatch('3D',plotmode)
    dim_plot = '3D';
else
    dim_plot = '2D';
end
switch plotmode
  case {'lvl','3Dlvl'}
    lev_mode  = 'row';
    abs_mode  = 0;
  case {'glb','3Dglb'}
    lev_mode  = 'mat';
    abs_mode  = 0;
  case {'abslvl','lvlabs','3Dabslvl','3Dlvlabs'}
    lev_mode  = 'row';
    abs_mode  = 1;
  case {'absglb','glbabs','plot','2D','3Dabsglb','3Dglbabs','3Dplot','3D'}
    lev_mode  = 'mat';
    abs_mode  = 1;
  otherwise
    plotmode  = 'absglb';
    lev_mode  = 'mat';
    abs_mode  = 1;
    dim_plot  = '2D';
end
if abs_mode , dummyCoefs = abs(dummyCoefs); end
plotPARAMS = {NBC,lev_mode,abs_mode,cmap};
switch dim_plot
  case '2D'
    axeAct = gca;
    plotCOEFS(axeAct,dummyCoefs,plotPARAMS);
    h=axeAct;
  case '3D'
    axeAct = gca;
    surfCOEFS(axeAct,dummyCoefs,plotPARAMS);
    h=axeAct;
end
%----------------------------------------------------------------------
function plotCOEFS(axeAct,coefs,plotPARAMS)
[NBC,lev_mode,abs_mode,cmap] = deal(plotPARAMS{:});
coefs = wcodemat(coefs,NBC,lev_mode,abs_mode);
img   = image(coefs);
set(axeAct,'YDir','normal','Box','On');
title('Matrix''s 2-D Visualization','Parent',axeAct);
xlabel('x','Parent',axeAct);
ylabel('y','Parent',axeAct);
colormap(cmap);
%----------------------------------------------------------------------
function surfCOEFS(axeAct,coefs,plotPARAMS)
[NBC,lev_mode,abs_mode,cmap] = deal(plotPARAMS{:});
img = surf(coefs);
set(axeAct,'YDir','normal','Box','On');
title('Matrix''s 3-D Visualization','Parent',axeAct);
xlabel('time','Parent',axeAct);
ylabel('frequency','Parent',axeAct);
zlabel('amplitude','Parent',axeAct);
xl = [1 size(coefs,2)];
yl = [1 size(coefs,1)];
zl = [min(min(coefs)) max(max(coefs))];
set(axeAct,'Xlim',xl,'Ylim',yl,'Zlim',zl,'view',[-30 35]);
colormap(cmap);
shading('interp')
发表于 2011-12-5 16:29 | 显示全部楼层
下了两次,都没下,扣了我4 体能。。。。。。搂住给发个 2004031250@163.com.
发表于 2011-12-6 18:54 | 显示全部楼层
学习一下,论坛里还是有高人哪!
发表于 2011-12-26 18:44 | 显示全部楼层
介个东西,那位有收藏到,可否拿出来分享下,谢谢。
发表于 2012-1-3 21:57 | 显示全部楼层
还好吧,需要自己看得懂
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-24 21:36 , Processed in 0.065208 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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