Your question is relatively broad in the sense that the difficulty could vary greatly depending on the sampling rate, the avaible signal length and the noise.
I assume a high sampling rate of 1 kHz, 10s of available signal and no noise.
The first solution is to use a fft's magnitude, it works only if all the frequencies are different (if you have a cos and a sine with the same frequency, you'll have to check the phases too) :
Fs=1e3; %sampling frequency
T=1/Fs; %sampling period
N=10/T; %Number of points to have 10s of signal
f=Fs*linspace(0,1,N);
Fm=(1/N)*fft(m); %Normalization
Fm=2*Fm(1:length(t)/2); %Get rid of the negatives frequencies
figure, plot(f,Fm)
xlabel('frequency (hz)')
ylabel('Magnitude')
Here's a zoom on the fft's plot. Then you have to extract the peaks which is very easy if the noise is low and if you know how many peaks there is. I stress it again, it is much more difficult if you have high noise / low sampling frequency / short signal available only.
An another solution is to directly estimate your system's parameters.
$$
\begin{cases}
x(t)=A \sin(2 \pi f_x t) \\
y(t)=B \sin(2 \pi f_y t) \\
z(t)=C \sin(2 \pi f_z t)
\end{cases}
$$
You can estimate the parameter $\Theta=[A,B,C,f_x,f_y,f_z]^t$ by optimizing a least square criterion with Gauss-Newton method, let's write $C(\Theta)$ such a criterion, $m(t_k)$ your discretised measurments and $m_{\theta}(t_k)$ the model with given parameter $\Theta$.
$$
C(\Theta)=\sum_{k=1}^{N} (m(t_k)-m_{\theta}(t_k))^2
$$
The parameter's value $\hat{\Theta}$ we're looking for is given by :
$$
\hat{\Theta}=\arg_{\Theta}\min C(\Theta)
$$
We find the minimum by searching $\hat{\Theta}$ such that $\nabla_{\Theta}C(\hat{\Theta})=0$
There you go with Gauss-Newton, the most difficult part being to calculate the model's gradient $\nabla_{\Theta}m_{\Theta}(t_k)$.
I assume you know how to proceed.
On a practical point of view, you may have to run the optimization routine multiple time with random initializations as it is possible that it gets stuck in local minimas.