前言

之前讲了MTM(多锥形窗谱估计)的相关原理,现在来分析一下它的matlab实现。
想要复习的可以参考一下之前的文件:
现代谱估计:多窗口谱
想要复习一下如何实现的可以参考:
MTM:matlab实现1MTM:matlab实现1
MTM:matlab实现2参数解析MTM参数解析

目录

  • 前言
  • 目录
  • 正文

正文

子函数的讲解即将收尾,现在是最后一个,多窗口谱计算函数。
输入
x 数据向量
params,pmtm传递的参数,除了输入x
它包含以下值域
nfft,评估功率谱的具体频率点
Fs 采样频率
range 单边还是双边
ConfInt 置信间隔 默认0.95
mtmmethod多窗口谱方法,默认自适应
E,dpss矩阵
V 包含dpss序列中心的向量
NW 时间带宽乘积
输出
s MTM计算出的功率谱
k 构建pxx的加窗数
w dft计算的频率点

%----------------------------------------------------------------------
function [S,k,w] = mtm_spectrum(x,params)
%MTM_SPECTRUM Compute the power spectrum via MTM.
%
% Inputs:
%   x      - Input data vector.
%   params - Structure containing pmtm's input parameter list, except for
%            the input data sequence, x; it contains the following fields:
%      nfft     - Number of frequency points to evaluate the PSD at;
%                 the default is max(256,2^nextpow2(N)).
%      Fs       - The sampling frequency; default is 1.
%      range    - default is 'onesided' or real signals and 'twosided' for
%               - complex signals.
%      ConfInt  - Confidence interval; default is .95.
%      MTMethod - Algorithm used in MTM; default is 'adapt'.
%      E        - Matrix containing the discrete prolate spheroidal
%                 sequences (dpss).
%      V        - Vector containing the concentration of the dpss.
%      NW       - Time-bandwidth product; default is 4.
%
% Outputs:
%   S      - Power spectrum computed via MTM.
%   k      - Number of sequences used to form Pxx.
%   w      - Frequency vector for which DFT is calculated从输入中提取相关的参数
% Extract some parameters from the input structure for convenience.
nfft = params.nfft;
E  = params.E;
V  = params.V;
Fs = params.Fs;
如果没有采样频率,则默认为归一化频率2pi
if isempty(Fs)Fs = 2*pi;
end
列向量计算MTM,每一列是一个单独的采样。
行数即采样点数,列数即独立信号个数
N = size(x,1);
Nchan = size(x,2);
采用的多窗口的窗口个数
k = length(V);
如果nfft不是一个整数而是一个列向量,则代表它是想要计算的点。
if length(nfft) > 1, isfreqVector = true;     nfft_mod = length(nfft);
else isfreqVector = false;nfft_mod = nfft;
end
如果x是single,则信号功率谱也是single
if isa(x,'single') || isa(E,'single')S = zeros(nfft_mod, Nchan, 'single');
elseS = zeros(nfft_mod, Nchan);
end
对于每一个信号源
for chan=1:Nchan
计算加窗 离散傅里叶% Compute the windowed DFTs.如果指定输入频率向量或者不指定且N采样个数小于设定的NFFT点数if (~isfreqVector && N<=nfft) || isfreqVector 计算每一列的加窗fft变换% Compute DFT using FFT or Goertzel使用基本函数,快速计算加窗后的离散傅里叶变换[Xx,w] = computeDFT(bsxfun(@times,E(:,1:k),x(:,chan)),nfft(:),Fs); sk是xx的能量值   Sk = abs(Xx).^2;else % Wrap the data modulo nfft if N > nfft. Note we cannot use datawrap % and FFT because datawrap does not support matrices% use CZT to compute DFT on nfft evenly spaced samples around the% unit circle:Sk = abs(czt(bsxfun(@times,E(:,1:k),x(:,chan)),nfft(:))).^2;
获得对应的频率点w = psdfreqvec('npts',nfft,'Fs',Fs);end
计算多窗口谱估计,在0:NFFt上计算整个特征谱。% Compute the MTM spectral estimates, compute the whole spectrum 0:nfft.switch params.MTMethod,
自适应的情况:case 'adapt'
设置决定自适应的权重的代数% Set up the iteration to determine the adaptive weights: 初始功率谱,第一列的平方和/数量sig2=x(:,chan)'*x(:,chan)/N;      % Power加窗1和加窗2的平均值作为初始值Schan=(Sk(:,1)+Sk(:,2))/2;    % Initial spectrum estimate   S1=zeros(nfft_mod,1);  % The algorithm converges so fast that results are% usually 'indistinguishable' after about three iterations.% This version uses the equations from [2] (P&W pp 368-370).% Set tolerance for acceptance of spectral estimate:tol=.0005*sig2/nfft_mod;a=bsxfun(@times,sig2,(1-V));% Do the iteration:while sum(abs(Schan-S1)/nfft_mod)>tol% calculate weightsb=(Schan*ones(1,k))./(Schan*V'+ones(nfft_mod,1)*a'); % calculate new spectral estimatewk=(b.^2).*(ones(nfft_mod,1)*V');S1=sum(wk'.*Sk')./ sum(wk,2)';S1=S1';Stemp=S1; S1=Schan; Schan=Stemp;  % swap S and S1endcase {'unity','eigen'}% Compute the averaged estimate: simple arithmetic averaging is used. % The Sk can also be weighted by the eigenvalues, as in Park et al. % Eqn. 9.; note that the eqn. apparently has a typo; as the weights% should be V and not 1/V.if strcmp(params.MTMethod,'eigen')wt = V(:);    % Park estimateelsewt = ones(k,1);endSchan = Sk*wt/k;endS(:,chan) = Schan;
end

MTM:matlab实现3谱功率计算相关推荐

  1. ar谱matlab实验,用MATLAB进行AR模型功率谱分析

    用MATLAB 进行AR 模型功率谱分析 随机信号序列x(n)是均值为0方差为1的高斯型白噪声经过AR 模型 ()4 3219606.01697.29403.22137.211 ----+-+-= z ...

  2. 用matlab求解信号的DFT,利用MATLAB实现信号DFT的计算

    07级电信(2)班 刘坤洋 24 实验一 利用MATLAB 实现信号DFT 的计算 一.实验目的: 1.熟悉利用MATLAB 计算信号DFT 的方法 2.掌握利用MATLAB 实现由DFT 计算线性卷 ...

  3. matlab 简单算例,(简单算例)基于Matlab的电力系统潮流编程计算.pdf

    (简单算例)基于Matlab的电力系统潮流编程计算 基于Matlab的电力系统潮流编程计算 口黄扬威吴喜春郭志峰张斯翔 (三峡大学电气与新能源学院湖北·宜昌443002) 摘要:通过介绍电力系统的实际 ...

  4. 电气潮流运算Matlab怎么编程,基于Matlab的电力系统潮流编程计算

    计算技术 信息发展 与 64 -- 科协论坛 · 2011 年第 6 期(下) -- 基于 Matlab 的电力系统潮流编程计算 □ 黄扬威 吴喜春 郭志峰 张斯翔 (三峡大学电气与新能源学院 湖北· ...

  5. 基于matlab的自动识别谱峰的程序设计,基于matlab的自动识别谱峰的程序设计毕业论文-资源下载人人文库网...

    基于matlab的自动识别谱峰的程序设计 毕业论文 目录摘要1一绪论211几种常用寻峰方法的简单说明212小波变换413MATLAB小波分析工具箱6二小波分析基本原理721一维连续小波分析722一维离 ...

  6. matlab ar谱分析,用MATLAB进行AR模型功率谱分析

    用MATLAB进行AR模型功率谱分析 用MATLAB进行AR模型功率谱分析 随机信号序列x(n)是均值为0方差为1的高斯型白噪声经过AR模型 H z 1 1 2.2137z 1 2.9403z 2 2 ...

  7. 根据功率计算用电量和电费

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 根据功率计算用电量和电费 文章目录: 1 度的概念 2 根据设备功率计算耗电度数 3 计算电费 1 度的概念 功率=电流 ...

  8. 基于matlab的图解粒度参数计算,基于MATLAB的图解粒度参数计算-热带地理.PDF

    基于MATLAB的图解粒度参数计算-热带地理 第 26卷 第 3期 热 带 地 理 Vol26,No3 2006年 8月 TROP ICAL GEO GRA PHY Aug. , 2006 基于 MA ...

  9. 如何根据灰度直方图计算标准差_如何根据电器功率计算电线的粗细?

    一般来说,测算电线的粗细,需要根据功率计算电流,根据电流选择导线截面,根据导线的截面,导线或电缆的型号查厂家的该型号的导线电缆的直径.这里就涉及了:电线粗细与功率之间的关系计算:导线截面积与载流量的计 ...

最新文章

  1. rsyslog服务日志报错分析1
  2. javascript 数组和对象的浅复制和深度复制 assign/slice/concat/JSON.parse(JSON.stringify())...
  3. GIPC2018全球知识产权生态大会
  4. expect实现配置机器信任关系
  5. linux comd skill
  6. 计算机网络技术发展四个阶段,计算机网络的发展分哪四个阶段,特点?
  7. OA办公系统免费版评测 哪个适合自己?
  8. 安装关系型数据库MySQL 安装大数据处理框架Hadoop
  9. swift语言实战晋级-第9章 游戏实战-跑酷熊猫-9-10 移除平台与视差滚动
  10. Android上层进入recovery流程
  11. win10程序员软件列表(持续更新中...)
  12. 打好高远球要注意的三要素
  13. 计算机移动硬盘的一般作用,移动硬盘有什么用处
  14. 中级财管电脑操作不会用计算机,很全面!2018年中级无纸化考试财管公式输入方法及计算器操作说明...
  15. 散列函数(哈希函数,Hash Function)
  16. 接缝雕刻算法:一种看似不可能的图像大小调整方法
  17. 2022年动力电池回收行业研究报告
  18. Python:王老先生有块地
  19. 2022年第3周(1月10日-1月16日)中国各影院电影票房排行榜:榜首票房83万元,8家影院观影人次超过万人(附年榜TOP100详单)
  20. 2022年登高架设考试练习题及在线模拟考试

热门文章

  1. github 档案馆(是不是那个把code放到北极的那个项目。。。)
  2. C++2 dimension vector
  3. ARMV7,ARMV8
  4. TrinityCore3.3.5编译过程-官方指导-踩坑总结
  5. 大四 PHP《上传文件》
  6. ELK三件套安装实践之路(1)
  7. 响应式Web设计(一):响应式Web设计的背景
  8. » Markdown/reST 编辑器 ReText 3.0 发布 Wow! Ubuntu
  9. TestLink测试用例:Excel转换XML工具二实现代码
  10. TACACS +和RADIUS比较