フィルターのクリア

Plotting .wav on MATLAB and converting to array

16 ビュー (過去 30 日間)
John Smith
John Smith 2015 年 11 月 2 日
コメント済み: Geoff Hayes 2015 年 11 月 4 日
Hi all,
I am using the following code to plot a .wav file on MATLAB:
[wave,fs]=audioread('file.wav');
t=0:1/fs:(length(wave)-1)/fs;
plot(t,wave);
Is this the correct way to plot it? and are the y-axis in Volts and the x-axis in Seconds? If it is the correct way, why is the amplitude being trimmed/clipping at 1?
Also, how can I convert the .wav file into an array so I can than copy it into a text file and use it in another program?
Any help would be highly appreciated.

回答 (1 件)

Geoff Hayes
Geoff Hayes 2015 年 11 月 2 日
John - according to audioread output parameters the samples are normalized between -1 and 1 if the data type is not specified or is of type double. As you have not included a data type when calling audioread then the "clamping" that you are observing is expected.
As for converting the wav file into an array, isn't that what the wave array is?
  8 件のコメント
John Smith
John Smith 2015 年 11 月 4 日
編集済み: John Smith 2015 年 11 月 4 日
Sorry I forgot to include the code for plotting the text file. I used to code below:
.
%Load text file
path='C:\Users\John\Desktop\';
fileName='test3.txt';
fname=fullfile(path,fileName);
s=load(fname);
%Plot the signal
figure(1);
plot(s(:,1), s(:,2));
Geoff Hayes
Geoff Hayes 2015 年 11 月 4 日
John - since you have written only the wave data to file (which may be both channels?) then your above code of
plot(s(:,1), s(:,2));
is just plotting one channel vs. the other. You probably only need to plot one channel but do so against time like you have done previously. So if you know the sampling frequency fs then you need to do (like before)
s=load(fname);
t=0:1/fs:(length(s)-1)/fs;
plot(t,s(:,1));

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeAnnotations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by