how to fix the following error?
Show older comments
dear Seniors and Experts I need solution for following code kindly help me to fix it .
data is
y=195840*2 double
fs=48000
t=0:0.001:2; % 2 secs @ 1kHz sample rate
x=chirp(t,0,1,150); % Start @ DC, cross 150Hz at t=1sec
F = 0:.1:100;
[y,f,t,p] = spectrogram(x,256,250,F,1E3,'yaxis');
% NOTE: This is the same as calling SPECTROGRAM with no outputs.
surf(t,f,10*log10(abs(p)),'EdgeColor','none');
axis xy; axis tight; colormap(jet); view(0,90);
xlabel('Time');
ylabel('Frequency (Hz)');
[y,fs]=audioread('Mithe Mustafa Tey 5sec.mp3');
NW = round(fs*0.250);
[S,F,T,P] = spectrogram(y,NW,[],[],fs);
Error using spectrogram>chkinput (line 252)
X must be a vector (either row or column).
Error in spectrogram (line 166)
chkinput(x);
while I click on line 252 and 166 it shows this
line 252 = error(message('signal:spectrogram:MustBeVector', 'X'));
line 166 = chkinput(x);
Accepted Answer
More Answers (1)
Walter Roberson
on 26 Mar 2019
0 votes
Your mp3 is stereo, 2 channels. spectrogram() can only process one channel at a time.
You need to do one of the following:
- Choose one of the two channels and only process that one; or
- combine the two channels into one, such as by using mean(); or
- call spectrogram twice, once for each of the channels.
6 Comments
Yasir Ali
on 26 Mar 2019
Walter Roberson
on 26 Mar 2019
[S,F,T,P] = spectrogram(y(:,1), NW, [], [], fs);
Yasir Ali
on 26 Mar 2019
Walter Roberson
on 26 Mar 2019
The x axis is frequency. The y axis is time. The color is power.
Yasir Ali
on 26 Mar 2019
Edited: Walter Roberson
on 30 Mar 2019
Walter Roberson
on 30 Mar 2019
I am not sure. My calculation at the moment is that with your window of 256 that you would get resolution to about 375 Hz, but I do not trust those calculations at all.
Categories
Find more on Time-Frequency Analysis 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!