how to do wavwrite on this mat file
2 次查看(过去 30 天)
显示 更早的评论
Hi i am having mat file which is having DTMF tones i am listening tones by this
x = load('dtmfsig.mat')
f = fieldnames(x)
soundsc(x.(f{1}), 8000)
Now i want to save this tone in a wave file
i know wavread command but how to use it here??
1 个评论
tammna abid
2012-5-9
Hello there ,
i also have same problem , want to convert .mat file to .wav file with this code but unable to do so
x=load('read.mat');
wavwrite(x,8000,16,'foo.wav');
i also did the method mention below x.f{1} but of no help, pls help me out
采纳的回答
Wayne King
2011-10-31
fieldnames() returns a cell array. So
f = fieldnames(x);
is returning the fieldnames of x in the cell array f
x.(f{1}) is addressing the field of x that is in the first element of that cell array.
Is that what you want to write? It might be x.(f{2}), etc. depending on how the structure array is formed.
2 个评论
Wayne King
2011-10-31
For example (this is just my example!)
x = struct('Fs',8000,'data',randn(1e3,1));
f = fieldnames(x);
x.(f{1}) % this is 8000, the sampling frequency
plot(x.(f{2})); % is the data field (the signal)
% but
x = struct('data',randn(1e3,1),'Fs',8000);
f = fieldnames(x);
plot(x.(f{1})) % this is the signal
x.(f{2}) % this is the sampling frequency
tammna abid
2012-5-9
what actually 'data' here above stand for ? means data of .mat file ?, i didnt get your example above
更多回答(2 个)
Honglei Chen
2011-10-31
To write a wave file, you need at least the signal and the sampling frequency. From you example, it seems you can just do
wavwrite(x.(f{1}),8000,'foo.wav')
where you can replace foo.wav to whatever the name you choose for your wav file.
HTH
1 个评论
tammna abid
2012-5-9
Siri am having the same problem , pls figure it out where i am wrong
x=load('read.mat');
>> f=fieldnames(x);
>> wavwrite(x.(f{1}),8000,'foo.wav')
Warning: Data clipped during write to file:foo.wav
> In wavwrite>PCM_Quantize at 247
In wavwrite>write_wavedat at 267
In wavwrite at 112
>>
what these warning actually means ?
moonman
2011-10-31
2 个评论
Fangjun Jiang
2011-10-31
You are loading 'dtmfsig.mat'. x.(f{1}) will be the first (alphabetically) variable in the .mat file.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Whos 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!