Plot 3D matrix with complex values

I have a matrix of complex values (a i +b), with shape 128 * 8 * 121. How can I plot it, please ?
Thank you so much in advance :)

댓글 수: 6

darova
darova 2019년 9월 23일
What those values represent?
nour besbes
nour besbes 2019년 9월 23일
It represent the result of the stft matlab function
darova
darova 2019년 9월 23일
Where those values should be on the graph?
nour besbes
nour besbes 2019년 9월 23일
I want to have a graph like this one.
stft.png
darova
darova 2019년 9월 23일
What do dimension mean? (128 x 8 x 121) ?
nour besbes
nour besbes 2019년 9월 23일
it's a 3D matrix. It means 8 matrix of (128 rows X 121 columns ) size.

댓글을 달려면 로그인하십시오.

답변 (3개)

Matt J
Matt J 2019년 9월 23일
편집: Matt J 2019년 9월 23일

1 개 추천

One way,
plot(a(:),b(:),'x')
darova
darova 2019년 9월 23일

0 개 추천

Try pcolor
pcolor(A(:,1,:)) % display first matrix
Sara James
Sara James 2019년 10월 21일

0 개 추천

As another mentioned previously, use pcolor. Note that since your signal is complex, you will have to take the absolute value first as follows:
fs = 3000; % Sampling frequency (Hz)
t = 0:1/fs:1-1/fs; % Time (sec)
x = [exp(2j*pi*100*cos(2*pi*2*t))+randn(size(t))/100; ...
exp(2j*pi*100*cos(0.5*pi*2*t))+randn(size(t))/100; ...
exp(2j*pi*100*cos(1*pi*2*t))+randn(size(t))/100]'; % 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
hC = colorbar;
hC.Limits = caxisLims;
hC.Label.String = 'Magnitude (dB)';
title(sprintf('Channel %d',ii))
end
sgtitle('Spectrogram')

카테고리

도움말 센터File Exchange에서 Line Plots에 대해 자세히 알아보기

질문:

2019년 9월 23일

답변:

2019년 10월 21일

Community Treasure Hunt

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

Start Hunting!

Translated by