Signal separation of displacement multimodal superposition in structural dynamics

clc; clear;
% 参数定义
L = 10;
v = 1;
A1 = 1;
A2 = 0.1;
x0 = L / 3;
% 时间轴
t = linspace(0, 10, 1000);
U_t = A1 * sin(pi * v * t / L) * sin(pi * x0 / L) + ...
A2 * sin(2 * pi * v * t / L) * sin(2 * pi * x0 / L);
figure;
plot(t, U_t, 'r-', 'LineWidth', 2);
xlabel('时间 t (s)');
ylabel('位移 U(t)');
grid on;
For such signals, is there any method to separate these two signals from the perspective of data?

답변 (1개)

hello
you could do that :
clc; clear;
L = 10;
v = 1;
A1 = 1;
A2 = 0.1;
x0 = L / 3;
t = linspace(0, 10, 1000);
u1 = A1 * sin(pi * v * t / L) * sin(pi * x0 / L);
u2 = A2 * sin(2 * pi * v * t / L) * sin(2 * pi * x0 / L);
U_t = u1 + u2;
% extraction based on cos / sin projection
% u2 = 1 period signal
omega = 2 * pi * v / L;
u2c = 2*sum(u2.*cos(omega * t ))/numel(t);
u2s = 2*sum(u2.*sin(omega * t ))/numel(t);
u2_estimated = u2c*cos(omega * t ) + u2s*sin(omega * t );
u1_estimated = U_t - u2_estimated;
% plot the estimated signals with a downsampling factor of r
r = 25;
ind = 1:r:numel(t);
figure;
plot(t, U_t, 'r-', 'LineWidth', 2);
hold on
plot(t, u1, 'b-', 'LineWidth', 1);
plot(t(ind), u1_estimated(ind), 'b*', 'LineWidth', 2);
plot(t, u2, 'c-', 'LineWidth', 1);
plot(t(ind), u2_estimated(ind), 'c*', 'LineWidth', 2);
xlabel('t (s)');
ylabel('U(t)');
grid on;
legend ('U_t','u1','u1 estimated','u2','u2 estimated');

댓글 수: 9

Thank you for your reply. Suppose I only have a one-dimensional superimposed signal with an unknown expression and an unknown function form. Is there any method to separate such a signal?
you could use a fft approach but you need to have a longer signal - here the lowest frequency has only half a period
in practice you would need probably a record long enough so that the lowest frequency has a couple of periods
华
2025년 7월 23일
이동: Mathieu NOE 2025년 7월 23일
You're absolutely right, that's indeed the case. However, if it's impossible to obtain signals over multiple periods, is there any method for separation? I've thought about it too, but precisely because of the particularity of the signal, I haven't found a good method.
maybe we have a solution if you can ensure that the signal has exactly a multiple of half periods (like here we have half + one period)
if you have a time duration which is random, except the fft I don't see how you could do this work
BTW, have you looked at EMD :
(haven't tried yet )
there is also a 2D version :
This work is actually about modal separation in structural dynamics. I have tried many signal separation methods, including EMD, but failed to achieve separation. EEMD seems to have some effect, but it is not very ideal and is affected by parameters. Therefore, I want to find a perfect solution.
Thank you for providing the paper. I have carefully reviewed the literature, but one difference is that my data is only in the form of a one-dimensional vector rather than a matrix, so it cannot be decomposed in the same way as a matrix.
hello again
can we assume that start and end points have always y = 0 value ? (fixed or pinned end points ?)
Yes, both ends are fixed. This refers to the mode superposition of a simply supported beam in dynamics. How to decouple it?

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

카테고리

질문:

华
2025년 7월 23일

댓글:

华
2025년 8월 30일

Community Treasure Hunt

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

Start Hunting!

Translated by