To find angular frequency and wave vector for time series data

8 ビュー (過去 30 日間)
Ismita
Ismita 2024 年 2 月 17 日
コメント済み: Star Strider 2024 年 3 月 4 日
if I have 10 set of time series data velocity componnts Vx, Vy and Vz with 5 minutes interval of time, how to find the angular frequency and wave vector using minimum variance method for those data? Thanks

回答 (1 件)

Star Strider
Star Strider 2024 年 2 月 17 日
From what I’ve been able to discover, the ‘minimum vairance method’ is a heirarchical clustering approach. MATLAB has a few ways to do that. See the documentation section on Hierarchical Clustering, linkage and related functions for details.
If you want to fit those data to a function instead (estimating the function’s parameters using the data to optimise them), that is an entirely different problem. MATLAB has a number of different ways to solve it.
  6 件のコメント
Ismita
Ismita 2024 年 3 月 4 日
Thank you! I am doing as follows. I request your opinion if I am wrong! thanks again.
%eigen value find
n = length(speed_R);
speedxz = [Ux, Uz];
% Step 2: Compute the covariance matrix manually
mean_speedxz = mean(speedxz);
centered_speedxz = speedxz - mean_speedxz;
covariance_matrix = (centered_speedxz' * centered_speedxz) / (n - 1);
% Step 3: Calculate eigenvalues and eigenvectors manually
[eigenvectors, eigenvalues] = eig(covariance_matrix);
% Step 4: Select eigenvectors corresponding to significant eigenvalues
eigenvalues = diag(eigenvalues);
[sorted_eigenvalues, indices] = sort(eigenvalues, 'descend');
num_significant_eigenvalues = 1; % Assuming you want the first significant eigenvector
significant_index = indices(1:num_significant_eigenvalues);
significant_eigenvector = eigenvectors(:, significant_index);
% Step 5: Compute the wave vector (normalized eigenvector)
wave_vector = significant_eigenvector / norm(significant_eigenvector);
% Step 6: Compute wave vector components
kmx = wave_vector(1)
kmy = wave_vector(2)
kmz = wave_vector(3)
%km = sqrt(kmx^2 + kmy^2 +kmz^2)
% Step 7: Compute magnitude of the wave vector
km = norm(wave_vector);
Star Strider
Star Strider 2024 年 3 月 4 日
I have no idea what you are doing or what your data are.
I would probably use the fft function to find the frequency in time-varying waveform data. (I asume the data are amplitude as a function of time.)
If you have defined a system (for example a control system) ot diferential equations describing it, the eigenvalues of the ‘A’ matrix will be the charactreristic (resonant) frequencies of the system. I would be hesitant to apply that to time-series data.
With a 5-minute (300 second) sampling interval, the sampling frequency is 0.2 cycles/minute (0.00333 ... Hz) and ths highest frequency you could estimate (the Nyquist frequency) would be 0.1 cycles/minute (0.00166 ... Hz).
.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSubspace Methods についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by