matlab循环左移_matlab循环到某一条件停止

matlab循环左移_matlab循环到某一条件停止信号与系统 MATLAB 仿真的常用实现本篇应付考试而采用比较原始的写法,整齐些的设计见另一篇(后来发现没啥用):Gralerfics:MATLAB 简易时域频域信号处理工具类信号表示用向量表示值,并再用一个向量(或其他)维护其定义域。信号卷积(conv)计算两向量的卷积

信号与系统 MATLAB 仿真的常用实现   本篇应付考试而采用比较原始的写法,整齐些的设计见另一篇(后来发现没啥用):Gralerfics:MATLAB 简易时域频域信号处理工具类   信号表示   用向量表示值,并再用一个向量(或其他)维护其定义域。   信号卷积(conv)   计算两向量的卷积。   在实际信号处理当中要注意维护信号的定义域,卷积所得结果的定义域为二者左界和到右界和。   差分方程表示的系统响应(filter)   其中向量
a
b 的定义见后,
x 为系统输入信号,
y 即为所求响应。   对于差分方程表示的因果线性时不变系统   
\sum_{k=0}^K a_k y[n-k] = \sum_{m=0}^M b_m x[n-m] \\   MATLAB 中规定   
b = \left[ b_0, b_1, \cdots, b_M \right] \\ a = \left[ a_0, a_1, \cdots, a_K \right]   即按照   
x[n], x[n-1], \cdots, x[n-M] \\   之系数的顺序排列。   微分方程表示的系统响应(lsim)   其中向量
a
b 的定义见后,
x 为系统输入信号,
t 为时域采样点向量,
y 即为所求响应,每个素对应于
t 中指示的采样点位置。   对于微分方程表示的因果线性时不变系统   
\sum_{k=0}^K a_k \frac{\text{d}^k y(t)}{\text{dt}^k} = \sum_{m=0}^M b_m \frac{\text{d}^m x(t)}{\text{dt}^m} \\   MATLAB 中规定   
b = \left[ b_M, b_{M-1}, \cdots, b_0 \right] \\ a = \left[ a_K, a_{K-1}, \cdots, a_0 \right]   即按照   
\frac{\text{d}^K y(t)}{\text{dt}^K}, \frac{\text{d}^{K-1} y(t)}{\text{dt}^{K-1}}, \cdots, y(t) \\   之系数的顺序排列。   差分方程表示的系统频率响应(freqz)   n 为采样点个数,只要传入个数是因为区间固定了(响应是周期的),加上那个 whole 就是
[0, 2\pi] ,不加就是一半。采样位置还会通过 omega 返回。   微分方程表示的系统频率响应(freqs)   这里需要主动传入采样点集 omega,返回频率响应 H。   上述系统的另一种表示方法——有理传递函数   例如 lsim 函数对于用传递函数   
H(s)=\frac{b_M s^M + b_{M-1} s^{M-1} + \cdots + b_0}{a_K s^K + a_{K-1} s^{K-1} + \cdots + a_0} \\   描述的系统,MATLAB 中规定(其他函数中可能不同!)   
b = \left[ b_M, b_{M-1}, \cdots, b_0 \right] \\ a = \left[ a_K, a_{K-1}, \cdots, a_0 \right]   即按照多项式高次到低次系数的顺序排列。   如 freqz、freqs、filter、lsim 等输入 b 和 a 的函数都有类似用法,要注意各自的系数顺序有些不同。   不高兴整理了,MATLAB 自带帮助里都有,例如:help freqz。多看文档!   快速傅里叶(逆)变换(fft、ifft)   离散傅里叶级数   总之 fft 函数可以用于求解离散傅里叶级数,原因有空补一篇相关快速傅里叶变换的。   刚好嘛,fft 函数接收长度为 N 的向量,返回长度为 N 的向量;并且要注意的是,传入 fft 的向量是信号从原点开始的一个周期长度的值。   fft 函数计算的东西用公式表示下就是这个:   
matlab循环左移_matlab循环到某一条件停止} x[n] e^{-j k \omega_0 n} \\” eeimg=”1″>   而我们知道离散傅里叶级数的公式是这个:   
matlab循环左移_matlab循环到某一条件停止} x[n] e^{-j k \omega_0 n} } \\” eeimg=”1″>   所以利用 fft 求解离散傅里叶级数就用下面这句(即除一个
N ):   连续傅里叶变换   对于
x(t) ,我们对其采样,取一个
x[n] 。我们记
n 为采样点的序数(也就是
x[n] 的自变量),
\tau 则代表每个采样点之间相隔在时域上的实际距离,于是有
t=n \tau ,且   
x[n]=x(n \tau) \\   图就不画了,就是在连续的
x(t) 上取一堆均匀间隔的点变成离散的
x[n] 。我们总共取
N 个点,则原周期长度
T=N\tau 。   将傅里叶变换的定义式拆解为黎曼和   
X(j \omega) = \int_{-\infty}^{\infty} x(t) e^{j \omega t} dt = \lim_{\Delta \tau \rightarrow 0}{ \sum_{n=-\infty}^{+\infty}{ x(n \Delta \tau) e^{-j \omega n \Delta \tau} \Delta \tau } } \\   因为无法模拟无限精度,于是我们用上面提及的
\tau 来逼近
\Delta \tau 以获得傅里叶变换的近似值   
X(j \omega) \approx X(j \frac{2 \pi n}{T}) = \sum_{n=0}^{N-1} x(n\tau) e^{-j k \omega_0 n} \tau = \tau \color{orange} {\sum_{n=0}^{N-1} x[n] e^{-j k \omega_0 n}} \\ 所以实际上
\tau 才决定了模拟结果与真实结果的逼近程度,而
N 决定了对结果的采样精度。   而上面提到 fft 函数计算的就是上式的橙色部分。于是代码就这么写:   所以我们实际上是将连续非周期信号采样,并复制延拓为离散周期信号,求得其同样离散周期的傅里叶变换。我们实现中没有特意进行复制延拓等过程,因为 fft、ifft 函数就是将输入作为一个周期的周期信号来处理   接下来考虑变换到频域后定义域的问题(画图等需要)。我们近似后的函数自变量变成了
n :   
X(j \omega) \approx X(j \frac{2 \pi n}{T}) \\   在实际的坐标轴上是这样一个映射关系:
\omega \rightarrow \frac{2 \pi}{T} n = \frac{2 \pi}{N \tau} n ,所以在确定频域变换结果的实际定义区间时,每个采样点的间隔为
\frac{2 \pi}{N \tau} 。   例如,如果是经过 fftshift(见下)的结果,绘制到图上,横轴可以使用   
\text{linspace} (\frac{1-N}{2} \frac{2 \pi}{N \tau}, \frac{N-1}{2} \frac{2 \pi}{N \tau}, N) \\   即   逆变换   逆变换同理,同样要注意传入的向量应代表原点开始的一段频谱周期。   对于逆变换的定义区间问题,我们就把上文的结论反一下即可:   
\frac{2 \pi}{N \tau} n \rightarrow \omega \Rightarrow n \rightarrow \frac{N \tau}{2 \pi} \omega \\   还要注意的一点就是 ifftshift 与 fftshift 的使用,具体见下即可。   循环位移(circshift、fftshift、ifftshift)   该函数将
x 向量向右循环位移(右侧补到左侧来)
n 个单位(负数代表向左),可用于求解已知某个周期的周期函数从
matlab循环左移_matlab循环到某一条件停止0 开始的一个周期。   该函数将 fft 函数的结果循环位移一半长度,作用是将原点的傅里叶变换值移到向量的中间,一般用于展示。   该函数将被 fftshift 位移后的傅里叶变换值移回去,作用是保证正确地传入 ifft 函数。综合一下,进行一次傅里叶变换并且位移再还原的例子:ifft(ifftshift(fftshift(fft(x))))。 具体原因与 fft 和 ifft 要求的输入有关,具体见上。   计时(tic、toc、timeit)   toc 的值即上次 tic 后执行到此的耗时。   f 是函数类型,例如使用匿名函数。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/59359.html

(0)
上一篇 2024年 8月 30日 下午12:10
下一篇 2024年 8月 30日

相关推荐

关注微信