How can a make a CSD plot with a 3D matrix

For my thesis project I am making the analysis of signals I get when a sample gets irradiated by a pulsed laser and I make from 10 to 500 pulses for sample so it's a lot of data. For each pulse a signal of the milisecond order is recorded in wfm format and then converted to ascii. I already have a program that performs the FFT for each signal and then makes a waterfall plot with all the signals, so i have (frequency, pulse number, amplitude) for axis like the figure shows.
This is for ten pulses and it is not easy too see how the frequency changes with pulse number (since the peaks interfere) and when it's for 500 it gets worse. So what I would like to know if it is possible to make a CSD plot from the 3D matrix like this:
but that intead of having the time axis I have pulse number. For the examples I've seen for this it's necessary to make a grid but this requires integrer data and my data is decimals so I would really appreciate the help and ideas.

답변 (1개)

Image Analyst
Image Analyst 2016년 12월 31일

0 개 추천

Why is the grid needed? I say that because you can get the grid with pcolor() but the reason I don't like it is that it doesn't show you the last row and column. So I'd use imshow() which is better especially for large arrays where the grid lines could obscure the actual data. You can also put in XData and YData so that the axes tick labels are what you want, instead of in pixels.

댓글 수: 2

arteyeiii
arteyeiii 2016년 12월 31일
I don't understand if I already hace the data why would I use imshow() to extract the information... it's an honest question I have not used this command before
You have the data. I assume that is the information you want, and you just need to display it. Is there other information there that you need to extract, like the area fraction of data greater than some value, or the mean value of data in some region that you define? If so you'll need to do image analysis on the data. If not, then just display it
[rows, columns] = size(data);
frequencyVector = linspace(0, 11000, columns);
timeVector = linspace(0, 5, rows);
imshow(data, [], 'XData', frequencyVector, 'YData', timeVector);
axis on;

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

카테고리

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

질문:

2016년 12월 31일

댓글:

2016년 12월 31일

Community Treasure Hunt

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

Start Hunting!

Translated by