【问题标题】:convert .mat to .wav将 .mat 转换为 .wav
【发布时间】:2014-01-14 11:41:01
【问题描述】:

我需要在 Matlab 中从 .mat 文件创建一个 wav。我这样做了:

wavwrite('cap_triger.mat',44100,16,'telo.wav')

其中 cap_trigger.mat 是一个包含信息的文件。 matlab 用这些语句创建 telo.wav 但是是空的。

这就是我创建文件的方式:

%captura 
frame_dur = 202e-3;
fs = 44.1e3; 
t_max = 100e-3;

%duración de la ventana de transmisión 
dur_trig = 1e-3;

%duración temporal del pulso de la señal de trigger 
t_samp = 1/fs;  %periodo de muestreo 

%duración del trigger en muestras 
trig_samples = floor(dur_trig/t_samp);
rec_obj = audiorecorder(fs,24,2);
recordblocking(rec_obj,frame_dur);
frame=getaudiodata(rec_obj); 

【问题讨论】:

  • 这实际上并没有显示您是如何创建 .mat 文件的。它显示您将数据记录到变量“帧”中。这是你想要的 WAV 文件吗?

标签: matlab audio signal-processing


【解决方案1】:

wavwrite需要一个变量,不能直接处理.mat-files。

load cap_triger.mat
X = dataarray;   % dataarray contained in .mat-file with all the information
                 % or use the variable X contained in the file directly, whatever
wavwrite( X,44100,16,'telo.wav' )

我不确定也无法测试它,但也许这也可以:

wavwrite( load('cap_triger.mat'),44100,16,'telo.wav' )

也请查看audiowrite,它提供了更多选项,并且也将在未来的版本中提供。 (而不是wavwrite

【讨论】:

  • 我试试这个,但是当我加载 .mat 时会产生这个错误:???使用 ==> 加载时出错 无法读取 MAT 文件 C:\Users\epbarreiro\Desktop\GRADIANT\CÓDIGO MATLAB\cod_Matlab_SISTOLE\v03\cap_trigger.mat:不是二进制 MAT 文件。尝试 LOAD -ASCII 读取为文本。
  • 您是如何创建该 .mat 文件的?
  • 来自音频捕获:%captura frame_dur=202e-3; fs=44.1e3; t_max=100e-3; %duración de la ventana de transmisión dur_trig=1e-3; %duración temporal del pulso de la señal de trigger t_samp=1/fs; %periodo de muestreo %duración del trigger en muestras trig_samples=floor(dur_trig/t_samp); rec_obj=录音机(fs,24,2);记录阻塞(rec_obj,frame_dur);帧=getaudiodata(rec_obj);
  • 您可以编辑您的帖子,这是我为您完成的。好吧,但它没有说明您是如何创建 mat 文件的。为什么不直接使用刚才提到的变量来创建 wav 文件?你需要什么中间的mat文件?
  • 如果 load('cap_triger.mat') 返回错误并且没有将任何内容加载到工作区中,则文件已损坏。
猜你喜欢
  • 2017-08-23
  • 2019-03-11
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多