Plot specific rows with an defined offset

14 views (last 30 days)
James Alix
James Alix on 27 Sep 2021
Commented: Star Strider on 28 Sep 2021
I have some spectral data, with points along individual spectra are in columns (there are 901 columns) and each row is a different sample (e.g. might have 12 samples): this is matrix "a".
I then have another set of data ("b") which has some scores which represent the amount of offset each sample must have on the plot I'm trying to produce. So "b" is a single column of data with 12 rows. The rows in "a" and "b" match in terms of samples i.e. row 1 = sample 1 in both.
I wish to plot the spectra in matrix "a", with each spectrum having a y offset that is given by the corresponding score in matrix "b": the rows in each match so row 1 is sample one in both "a" and "b". So, if the score the first row in "b" was 1.5, I would want the first spectrum in "a" offset by 1.5... and so on for all samples.
Next, I wish to generate another plot in which the samples (rows) in "a" are only plotted when the scores in "b" are either >0.5 or <-0.5 ..... For example:
Row 1 in "b" has a score of 1.5 so the row 1 spectrum in "a" is plotted with an offset of 1.5.
Row 2 in "b" has a score of 0.3, so row 2 spectrum in "a" is not plotted.
Row 3 in "b" has an entry of 1.2, so row 3 is plotted with an offset of 1.2.
Any help would be greatly appreciated!

Accepted Answer

Star Strider
Star Strider on 27 Sep 2021
One approach —
f = 0:49;
Spectra = rand(10, 50);
Scores = randn(10,1);
Offset = Scores;
Offset((Offset>-0.5) & (Offset<0.5)) = NaN
Offset = 10×1
-0.7186 NaN -0.8784 -0.6020 1.1341 NaN -0.9134 2.7814 -1.0031 2.1508
plot(f, Spectra+Offset)
Experiment to get different results.

More Answers (0)




Community Treasure Hunt

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

Start Hunting!