Plotting audio signal with number of samples

183 views (last 30 days)
So I have a .wav file and I need to plot 5000 time samples of it. The .wav file is sampled at 44.1 kHz (which would be my fs).
I initially was able to plot my signal, but then realized I needed to do it over 5000 samples. I tried doing it, but would get the error "Vectors must be the same length" when I go to plot.
Original Code
[x,fs]=audioread('Song.wav');
t=linspace(0,length(x)/fs,length(x));
plot(t,x)
xlabel('time')
ylabel('x[n]')
New Code (which I thought I would only need to change my linspace, but it doesn't seem to like it)
n = 5000;
[x,fs]=audioread('Song.wav');
t=linspace(0,length(x)/fs,n);
plot(t,x)
xlabel('time')
ylabel('x[n]')
Appreciate any help/guidance!
  4 Comments
Walter Roberson
Walter Roberson on 12 Dec 2021
Why would you need to change the x axes? We showed you how to create the correct time vector -- at least for the case where you start from sample #1 of the file and that sample is intended to be time 0.
AJ
AJ on 12 Dec 2021
I see. Just needed to think it through a little more. Appreciate the help.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 12 Dec 2021
n = 5000;
[x,fs]=audioread('Song.wav');
idx = 1:n;
subset = x(idx,:);
t = (idx-1)./fs;
plot(t,subset)
xlabel('time')
ylabel('x[n]')

More Answers (2)

Chunru
Chunru on 12 Dec 2021
% Read all data
[x,fs]=audioread('Song.wav');
t = (0:length(x)-1)/fs;
%t=linspace(0,length(x)/fs,length(x));
plot(t,x)
xlabel('time')
ylabel('x[n]')
n = 5000;
plot(t(1:n),x(1:n))
xlabel('time')
ylabel('x[n]')

philip
philip on 15 Jun 2023
% Read the .wav file
[y, fs] = audioread('your_file.wav');
% Extract the first 5000 samples
samples = y(1:5000);
% Create the corresponding time axis
t = (0:length(samples)-1) / fs;
% Plot the signal
plot(t, samples);
xlabel('Time (s)');
ylabel('Amplitude');
title('Plot of 5000 time samples');
% Optionally, you can adjust the figure size for better visibility
set(gcf, 'Position', [100, 100, 800, 400]);

Categories

Find more on Audio I/O and Waveform Generation in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!