The first data points of signal look like
so it is no wonder that you get the Fourier transform you have plotted. Doesn't look like something that would give you a peak close to 1000 Hz.
The fread there means that the first data point in test.bin is the first data point of channel 1, the second data point the first data point of channel 2, and so on. Is this correct?
Then amend the fist line of the code to
signal = data(1,:);
Your color scale is based on T, but what you are plotting is rs. For rh in the range of the parametric plot, the values of rs go beyond the corresponding range in T, for example at rh = 0.6, rs ≈ 0.6, while the color scale goes tp to T[0.6] ≈ 0.53.
I don't see a problem with breaking out of the inner loop or using a goto if the label it goes to is inside the outer loop. The reason you can't break out of a loop is that it is a linear process (it will stop the loop at a given value of the loop variable) that can't be parallelized.
That is correct.
Note however that a year is considered to be 365.25 days, not 365 (hence a leap year every four years). This does not change the numerical value of the length of the light year with 3 significant digits, as you wrote it.
If you simply declare the pointer as private, each thread will have its own pointer, but that pointer will point to a random place in memory. If you declare it as firstprivate, the address pointed to will be the same for all thread, i.e., each thread will have its own pointer, put all those...
Equations will be different when using CGS compared to SI, so one cannot simply change the units of the values used. Could this be source of your problem?
https://en.wikipedia.org/wiki/Gaussian_units