Azzera filtri
Azzera filtri

how to do wavwrite on this mat file

4 visualizzazioni (ultimi 30 giorni)
moonman
moonman il 31 Ott 2011
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 Commento
tammna abid
tammna abid il 9 Mag 2012
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

Accedi per commentare.

Risposta accettata

Wayne King
Wayne King il 31 Ott 2011
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 Commenti
Wayne King
Wayne King il 31 Ott 2011
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
tammna abid il 9 Mag 2012
what actually 'data' here above stand for ? means data of .mat file ?, i didnt get your example above

Accedi per commentare.

Più risposte (2)

Honglei Chen
Honglei Chen il 31 Ott 2011
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 Commento
tammna abid
tammna abid il 9 Mag 2012
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 ?

Accedi per commentare.


moonman
moonman il 31 Ott 2011
ok thanks can u kindly eexplain abt x.(f{1})
why 1 is there
  2 Commenti
Fangjun Jiang
Fangjun Jiang il 31 Ott 2011
It's in your code, man!
Fangjun Jiang
Fangjun Jiang il 31 Ott 2011
You are loading 'dtmfsig.mat'. x.(f{1}) will be the first (alphabetically) variable in the .mat file.

Accedi per commentare.

Categorie

Scopri di più su AI for Signals in Help Center e File Exchange

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by