矩形窗的归一化的幅度谱matlab代码
时间: 2023-11-30 10:43:01 浏览: 227
以下是矩形窗的归一化的幅度谱的Matlab代码:
```matlab
N = 64; % 窗口长度
w = rectwin(N); % 矩形窗
h1 = freqz(w,1,1024); % 矩形窗的频率响应
plot(w/pi,20*log10(abs(h1)/max(abs(h1)))); % 绘制归一化的幅度谱
```
相关问题
根据给出的浊音信号,分别画出浊音信号的时域波形、加矩形窗和加汉明窗后计算短时自相关归一化后的结果。语音的抽样频率为8kHz,窗长为320。
好的,根据您的要求,我来逐步解释一下如何画出浊音信号的时域波形、加矩形窗和加汉明窗后计算短时自相关归一化后的结果。
1. 读取浊音信号
首先,我们需要读取浊音信号,假设该信号的文件名为"voiced.wav",可以使用MATLAB自带的audioread函数读取:
```
[x, Fs] = audioread('voiced.wav');
```
其中,x是浊音信号,Fs是抽样频率。
2. 画出浊音信号的时域波形
可以使用MATLAB的plot函数画出浊音信号的时域波形:
```
t = (0:length(x)-1)/Fs; % 时间轴
plot(t, x); xlabel('时间/s'); ylabel('幅度');
```
3. 加矩形窗
加矩形窗可以使信号在帧内平滑过渡,避免产生频谱泄露。可以使用MATLAB的rectwin函数生成矩形窗:
```
win = rectwin(320);
```
其中,320是窗长。
4. 加汉明窗
加汉明窗也是为了平滑过渡,同时还能减小帧边缘的振荡。可以使用MATLAB的hamming函数生成汉明窗:
```
win = hamming(320);
```
5. 分帧并进行短时自相关归一化
接下来,我们需要将信号分成若干帧,并在每一帧上计算短时自相关函数并归一化。可以使用MATLAB的buffer函数分帧,使用xcorr函数计算自相关函数,使用norm函数归一化:
```
frameLen = 320; % 帧长
frameShift = 160; % 帧移
frames = buffer(x, frameLen, frameLen-frameShift, 'nodelay'); % 分帧
frames = frames .* repmat(win, 1, size(frames,2)); % 加窗
acf = zeros(frameLen*2-1, size(frames,2)); % 自相关函数
for i = 1:size(frames,2)
acf(:,i) = xcorr(frames(:,i), 'biased');
acf(:,i) = acf(:,i) ./ norm(frames(:,i))^2;
end
```
其中,acf是自相关函数矩阵,每一列是一帧的自相关函数。
6. 可视化
可以使用MATLAB的subplot函数将时域波形、加矩形窗和加汉明窗后计算短时自相关归一化后的结果可视化:
```
subplot(2,2,1); plot(t, x); xlabel('时间/s'); ylabel('幅度'); title('时域波形');
subplot(2,2,2); plot(win); xlabel('样本序号'); ylabel('窗函数值'); title('加窗');
subplot(2,2,3); imagesc(acf); xlabel('帧序号'); ylabel('延迟'); title('自相关归一化');
```
这样就可以画出浊音信号的时域波形、加矩形窗和加汉明窗后计算短时自相关归一化后的结果了。需要注意的是,由于我们使用的是8kHz的抽样频率,所以每一帧的长度应该是320而不是256。
画矩形窗函数的时域和频域图代码
画矩形窗函数的时域和频域图可以使用MATLAB实现,代码如下:
```matlab
% 生成矩形窗函数
N = 51; % 窗口长度
w = rectwin(N); % 矩形窗函数
% 画时域图
figure(1);
stem(w);
xlabel('n');
ylabel('w(n)');
title('矩形窗函数的时域图');
% 画频域图
W = fft(w); % 离散傅里叶变换
W = fftshift(W); % 将零频移到中心
f = linspace(-0.5, 0.5, N); % 归一化频率轴
figure(2);
plot(f, abs(W));
xlabel('归一化频率');
ylabel('|W(f)|');
title('矩形窗函数的频域图');
```
这段代码首先生成了一个长度为51的矩形窗函数,然后分别画出了矩形窗函数的时域图和频域图。时域图使用了stem函数画出离散时间的幅度值,频域图使用了plot函数画出了离散傅里叶变换的幅度谱,其中使用了fftshift函数将零频移到中心,使用linspace函数生成归一化频率轴。
阅读全文