matlab里信号的数据表,MATLAB 信号数据转换

数据转换是指改变音频格式中的采样频率或量化位数

转换原理:

先用矩阵插值或抽取技术实现变量变换

如果是抽取数据还需在变换前作滤波处理使之满足采样定理

变量变换完成后再用

audioread函数重新定义量化位数和采样频率即可实现数据转换

数据转换过程中,要注意采样频率与原始采样频率及插值或抽取系数的关系

MATLAB实现插值或抽取的函数有 decimate ,interp和 resample

这里以 2倍抽取为例 将012617137-scuba-diver-3Filter.WAV文件进行数据转换处理 具体程序如下

clear;

close all;

clc;

[x,FS]=audioread('012617137-scuba-diver-3Filter.WAV'); % 将 WAV 文件转换成变量

N=length(x); % 计算数据点数

% 不是偶数点化成偶数点

if mod(N,2)==0; N=N; else x(N)=[]; N=N-1; end;

% 原信号波形频谱分析

tx=(0:N-1)/FS; % 计算原信号数据点时刻

subplot(3,2,1);plot(tx,x); % 绘制原信号波形

title(' 原信号波形图 '); % 加标题

xf=fft(x); % 求原信号频谱

fx=(0:N/2)*FS/N; % 确定频谱图频率刻度

subplot(3,2,2);plot(fx,abs(xf(1:N/2+1))); % 绘制原信号频谱

title(' 原信号频谱图 '); % 加标题

% 实现数据抽取

k=[1:N/2]; % 确定抽取位置

y=x(2*k); % 实现抽取后的数据

M=length(y); % 计算抽取后数据点数

% 抽取数据在原采样频率 FS 下的波形频谱分析

ty=(0:M-1)/FS; % 计算数据点时刻

subplot(3,2,3);plot(ty,y); % 绘制信号波形图

title(' 原采样率下新波形图 '); % 加标题

yf=fft(y); % 求频谱

fy=(0:M/2)*FS/M; % 确定频谱图频率刻度

subplot(3,2,4);plot(fy,abs(yf(1:M/2+1))); % 绘制频谱图

title(' 原采样率下新频谱图 '); % 加标题

% 抽取数据在 FS/2 采样频率下的波形频谱分析

tz=(0:M-1)/(FS/2); % 计算数据点时刻

subplot(3,2,5);plot(tz,y); % 绘制信号波形图

title(' 新采样率下新波形图 '); % 加标题

fz=(0:M/2)*(FS/2)/M; % 确定频谱图频率刻度

subplot(3,2,6);plot(fz,abs(yf(1:M/2+1))); % 绘制频谱图

title(' 新采样率下新频谱图 '); % 加标题

% 实现数据转换

audiowrite ('XPquit16B.WAV',y,FS/2); % 音频格式 PCM

运行程序 在得到的图形窗口中 执行 Edit/Axes Properties命令 再把各分图下 X标签中的 Limits设为 0,0.01和 0, 1000得到 0--0.01秒的波形和 0 --1000Hz的频谱如图所示

由图可知在满足采样定律条件下,实现数据抽取

在原采样率下波形变密频谱变宽且幅度减半

但在新采样率下波形和频谱都很好

通过试听输出文件还可感受处理效果

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值