Get STFT plot with matrix Input
显示 更早的评论
Hello,
I am working with a radar output Q/ I matrix and I want to apply stft on the complex matrix (I + j Q) using matlab.
The stft function didn't accept Matrix Input. Is there a way to do it ?
Thank you so much in advance :)
回答(2 个)
Hi Nour,
You do not need a matrix format actually. I+j*Q is also in vector format and you can apply stft this complex data.
If you have orijinal x signal you can use hilbert(x).
result = hilbert(x)
then you can apply stft to result.
Priyanshu Mishra
2019-9-19
0 个投票
Hi Nour,
In the documentation page of stft, under the input argument section, it is mentioned that x can take vector and matrix both. You may refer to examples given in the documentation page of stft.
4 个评论
Nour
2019-9-19
Priyanshu Mishra
2019-9-20
Nour
2019-9-20
Sara James
2019-10-21
The stft function in 2019b only supports plotting of vector inputs. If you want to use the convenience plot of stft for your matrix input, you could do so within a for loop. Alternatively, you could specify your own plots using pcolor and subplot like in the following example:
fs = 1e3; % Sampling frequency (Hz)
t = 0:1/fs:1-1/fs; % Time (sec)
x = [chirp(t,100,1,300,'quadratic',45,'concave');
chirp(t,200,1,600,'quadratic',[],'convex');
chirp(t,300,1,500,'logarithmic')]'; % Multi-channel signal
[S,F,T] = stft(x,fs,'Window',hamming(128,'periodic'),'OverlapLength',50);
smag = mag2db(abs(S)); % Convert to dB
caxisLims = max(smag(:)) + [-60 0]; % Color axis limits
figure('Name','STFT')
numChannels = size(x,2);
for ii = 1:numChannels
subplot(2,2,ii)
pcolor(T,F,smag(:,:,ii))
xlabel('Time (s)')
ylabel('Frequency (Hz)')
shading flat
colorbar
caxis(caxisLims)
title(sprintf('Channel %d',ii))
end
类别
在 帮助中心 和 File Exchange 中查找有关 Transforms 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
