声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1381|回复: 5

[综合] 关于复数序列的输入问题

[复制链接]
发表于 2007-9-25 15:55 | 显示全部楼层 |阅读模式

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

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

x
我想用胡广书老师里面的最大熵谱程序,可是它要求要复数序列,而我采集的信号是实数呀,怎么解决呀,请高手指点,输入时可以将虚部全部设为零吗?
谢谢!
回复
分享到:

使用道具 举报

发表于 2007-9-26 08:49 | 显示全部楼层
对于做最大熵谱中,输入序列可以是实数序列。以下是胡广书老师提供的求最大熵谱的MATLAB程序。
%-------------------------------------------------------------------------
%exa121201_pmem.m, for example 12.12.1
%to test pmem.m;
%-------------------------------------------------------------------------
clear all;
% 调出数据;
load test x;
N=4096;
fn=-0.5:1/N:0.5-1/N;
% 使用最大熵算法得到功率谱估计;
xpsd=pmem(x,30,N);
pmax=max(xpsd);
xpsd=xpsd/pmax;
xpsd=10*log10(xpsd+0.000001);
plot(fn,fftshift(xpsd));grid on;

我估计楼主是用的FORTRAN程序,而输入序列设为复数。这可能是计算中的需要,而不是对输入序列的要求。可以把实数序列输入赋于实部,虚部设为0。

评分

1

查看全部评分

 楼主| 发表于 2007-9-29 11:22 | 显示全部楼层

谢谢宋老师

本帖最后由 wdhd 于 2016-9-7 15:56 编辑

  我用的是Fortran程序,并且用的是Harburg,我输入sin(2*pi/100*t)这个信号,dt=1s,分析出的频率在0.01Hz,这是对的,但分析我做得结果时就感觉不对了,
  宋老师你帮看一下我得结果在附件里,看是啥问题
  并且我把原始数据也传上去了,请宋老师 帮我用fortran做一下

数据1和谱

数据1和谱

数据2和谱

数据2和谱
 楼主| 发表于 2007-9-29 11:25 | 显示全部楼层

原始数据

data1.dat

93.24 KB, 下载次数: 11

data2.dat

101.33 KB, 下载次数: 11

发表于 2007-9-29 15:20 | 显示全部楼层
我没有FORTRAN的平台运行,所以无法从FORTRAN上帮助你。我用MATLAB运行,程序有
data=load('data1.dat');
t=data(:,1);
x=data(:,2);
T=t(2)-t(1);
fs=1/T;
N=length(x);
[Pxx, f]=pburg(x, 10, N, fs);
plot(f, Pxx);
xlabel (' Frequency' );
ylabel('Power Spectrum');
title('PSD--Burg method Oder= 10' );
axis([0 0.1 0 650]); grid;
用burg方法求功率谱。其中pburg(x, norder, N, fs)函数中的norder很关键,我选用了10,得下图;若选用20便会得类似你的图,所以改一下AR模型中的阶数。
wa12a.jpg
 楼主| 发表于 2007-9-29 16:20 | 显示全部楼层

宋老师,非常感谢!

能遇到宋老师这样的好老师,真是幸福啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-22 21:20 , Processed in 0.057007 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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