【问题标题】:calculate discrete S transform for given discrete time series计算给定离散时间序列的离散 S 变换
【发布时间】:2015-03-10 19:11:23
【问题描述】:

让我们考虑以下页面:

http://djj.ee.ntu.edu.tw/S_Transform.pdf

第 2.3 节离散 S 变换

假设我们已经采样了信号 x 的版本,并且给定采样频率 fs,我使用以下代码计算了离散傅里叶变换

function y=DFT(x);
N=length(x);
D=zeros(N,N);
for k=1:N
    for n=1: N
        D(k,n)=exp((-j*(k-1)*2*pi*(n-1))/N);
    end
end
y=D*x'/N;
end

并开始估计离散 S 变换

function [S]=discrete_s_transform(x,fs);
%compute discrete  s transform
%fs-sampling frequency 
N=length(x); % length of signal
T=1/fs; % sampling period
Y=DFT(X);

我该如何继续与这部分相关?

显然循环实现起来没有问题,只是它们从 1 到 N 而不是 0 到 N-1,因为 matlab 向量是基于 1 的,但是主代码呢?乘法到指数?你能帮我完成S变换吗?

【问题讨论】:

    标签: matlab loops fft wavelet


    【解决方案1】:

    您的总和仅取决于 m 所以我假设其他参数以及函数 H((m+n)/(NT)) 已定义。通过 for 循环,最简单的一种是:

    function [S]=discrete_s_transform(x);
    N=length(x); % length of signal
    S=0;
    m=0;
    for i=1:N
    S=S+H((m+n)/(NT))*exp(a)*exp(b*m/N);
    m=m+1; 
    end
    

    希望有帮助!

    【讨论】:

    • 但是S应该是二维矩阵吧?
    • 您可以遍历 'jT' 和 'n/(NT)' 以获得二维表示,其中每个元素都应该在 'm' 上求和,但通常 S 不一定是根据 2.14 的二维数组
    • 创建两个数组 b=1:n/(NT),另一个是 a=complex(1:T)。而且似乎他们那里有几个错别字。
    • 写出来更好地检查 S-Function,但我提供的代码通常用于查找 N=0...N-1 的总和。您可以添加上面两个大小为“a”和“b”的for循环来获得一个二维数组。
    猜你喜欢
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    相关资源
    最近更新 更多