Plot 3D matrix with complex values

2 次查看(过去 30 天)
nour besbes
nour besbes 2019-9-23
回答: Sara James 2019-10-21
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 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
One way,
plot(a(:),b(:),'x')

darova
darova 2019-9-23
Try pcolor
pcolor(A(:,1,:)) % display first matrix

Sara James
Sara James 2019-10-21
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')

类别

Help CenterFile Exchange 中查找有关 Line Plots 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by