24小时热门版块排行榜    

查看: 2051  |  回复: 22
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

brqhl_ing

银虫 (小有名气)

[交流] 【求助】在matlab中如何用希尔伯特变换定义相位 已有3人参与

请教高手一下啊,如何在matlab中利用希尔伯特变换来定义相位!最好举个简单的例子!万分感谢!!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brqhl_ing

银虫 (小有名气)

哎,自己顶一下啊!高手快进来啊
2楼2010-05-28 10:12:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brqhl_ing

银虫 (小有名气)

呜呜,传说中的高手呢!!
3楼2010-05-28 15:21:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brqhl_ing

银虫 (小有名气)

引用回帖:
Originally posted by lijinfeng042 at 2010-05-28 18:58:48:

根据定义啊
例子
[code]
%余弦信号
n=0:512;
Ts=0.0125;
xn=cos(40*pi*n*Ts);
subplot(2,1,1);plot(n,xn);
xlabel('采样点数n');ylabel('原始图像x(n)');title('余弦信号')

xn1=hilbert(xn)
xr=re ...

非常感谢!那么对一个任意的函数进行希尔伯特变换?怎么进行呢?例如对dx=10*(y-x)
5楼2010-05-28 23:36:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brqhl_ing

银虫 (小有名气)

引用回帖:
Originally posted by lijinfeng042 at 2010-05-29 11:42:44:

按定义来啊 呵呵

直接
syms x y
dx=10*(y-x);
xn=hilbert(dx);
xr=real(xn1)
xi=imag(xn1)
P=atan2(xi,xr)%
这样行吗?
运行后出现:syms x y
>> dx=10*(y-x);
>> xn=hilbert(dx);
xr=real(xn1);
xi=imag(xn1);
P=atan2(xi,xr);
Warning: HILBERT ignores imaginary part of input.
> In hilbert at 39
??? Function 'fft' is not defined for values of class 'sym'.

Error in ==> fft at 36
  [varargout{1:nargout}] = builtin('fft', varargin{:});

Error in ==> hilbert at 47
x = fft(xr,n,1); % n-point FFT over columns.
7楼2010-05-29 14:44:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brqhl_ing

银虫 (小有名气)

引用回帖:
Originally posted by lijinfeng042 at 2010-05-29 16:29:30:

呵呵 看到错误 你就知道hilbert的实质计算了吧 就是实部用fft 虚部iff计算的 但是你那样的话也不对啊 直接算不了的

现在我就是想对一个任意的函数进行希尔伯特变换啊?该怎么进行?不会要化成正余弦进行转换吧?例如:y=3x^3+2x^2+3x+3
9楼2010-05-29 18:54:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brqhl_ing

银虫 (小有名气)

引用回帖:
Originally posted by lijinfeng042 at 2010-05-29 19:15:42:

http://www.docin.com/p-3374693.html
看看定义 呵呵并不是那么好积出来

我的意思是matlab中有一个hilbert变换的函数啊?这个函数是怎么用的?不能对任一函数进行变换吗?为什么你那个例子对余弦函数就可以。而我对一个实函数却不行呢?
ps:谢谢你提供的信息!万分感谢!
11楼2010-05-29 19:41:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brqhl_ing

银虫 (小有名气)

引用回帖:
Originally posted by lijinfeng042 at 2010-05-29 22:17:21:

看一下帮助
In detail, hilbert uses a four-step algorithm:

   1.

      It calculates the FFT of the input sequence, storing the result in a vector x.
   2.

      It creates a vector ...

你的意思是。进行希尔伯特变换必须是这个函数对你取得每一个时间间隔都有对应的值?然后这些值构成一个矩阵,matlab就可以进行计算?例如:A=[1 2 3 4]这个就可以直接进行希尔伯特变换
14楼2010-05-30 09:00:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brqhl_ing

银虫 (小有名气)

引用回帖:
Originally posted by lijinfeng042 at 2010-05-30 14:26:53:

无限接近事实啊 呵呵
>> A=[1 2 3 4]
A =
     1     2     3     4
>> xn=hilbert(A)
xn =
   1.0000 + 1.0000i   2.0000 - 1.0000i   3.0000 - 1.0000i   4.0000 + 1.0000i
>>

经过你的点拨。已初步了解,在问一下 就是在定义相位的时候p=atan2(xi,xr);
2是什么意思!为不直接p=atan(xi,xr);请解释一下 谢谢!
16楼2010-05-30 16:09:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brqhl_ing

银虫 (小有名气)

引用回帖:
Originally posted by lijinfeng042 at 2010-05-30 14:26:53:

无限接近事实啊 呵呵
>> A=[1 2 3 4]
A =
     1     2     3     4
>> xn=hilbert(A)
xn =
   1.0000 + 1.0000i   2.0000 - 1.0000i   3.0000 - 1.0000i   4.0000 + 1.0000i
>>

呵呵,这个问题我已明白! 是因为其中的变量有两个!
17楼2010-05-30 16:19:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 brqhl_ing 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见