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
华
2025년 7월 23일
Mathieu NOE
2025년 7월 23일
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일
Mathieu NOE
2025년 7월 23일
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 :
华
2025년 7월 24일
Mathieu NOE
2025년 7월 24일
maybe this could help ?
华
2025년 7월 26일
Mathieu NOE
2025년 8월 25일
hello again
can we assume that start and end points have always y = 0 value ? (fixed or pinned end points ?)
华
2025년 8월 30일
카테고리
도움말 센터 및 File Exchange에서 Spectral Estimation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
