Plotting a Spectrogram with data from a csv file
22 次查看(过去 30 天)
显示 更早的评论
Hi I have some data in a csv file. The actual data has 1048576 lines and is too big to upload so I'm attaching a chunk of it which has only 10462 lines of data (trial3.csv). I would like to plot a Spectrogram using these values.
I am using the following lines to plot the data.
Array=csvread('trial3.csv');
col1 = Array(:, 1);
col2 = Array(:, 2);
plot(col1, col2)
%[S,F,T]=spectrogram(Array,32,16,32,100)
Can someone tell me how to make a spectrogram out of it please?
Thanks
Winee
0 个评论
采纳的回答
Wayne King
2013-12-4
编辑:Wayne King
2013-12-4
Array = csvread('trial3.csv');
dt = mean(diff(Array(:,1)));% sampling period
Fs = 1/dt;
[S,F,T,P] = spectrogram(Array(:,2),300,280,200,Fs);
surf(T,F,10*log10(abs(P)),'EdgeColor','none');
axis xy; axis tight; colormap(jet); view(0,90);
xlabel('Time (s)');
ylabel('Frequency (Hz)');
You did not answer the question about what is the lowest frequency you want to resolve. That basically defines your window length. I've just used 300 here which gets you down to about 1700 Hz.
6 个评论
Wayne King
2013-12-4
Just as I told you, you multiply the length of the window in samples by the sampling period. That gives you the length of the window in time.
更多回答(1 个)
Wayne King
2013-12-4
I don't see the attachment.
You have to obtain the spectrogram on a 1-D signal, not a matrix. So is col2 your data?
What is the sampling interval for this data -- time between measurements.
I doubt that 32 points is enough to get a good spectrogram, I would recommend making your window larger than that, but without more details about your data, it's hard to make a more concrete recommendation.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Time-Frequency Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!