Signal separation of displacement multimodal superposition in structural dynamics
4 次查看(过去 30 天)
显示 更早的评论
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?
0 个评论
回答(1 个)
Mathieu NOE
2025-7-23
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 个评论
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 ?)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!