使用Matlab 编写一个[y.yl,y2]=mwave(fl.ml,f2,m2)函数,实现以下功能,并绘出yI、y2、y在tE[0,2元区间500个样点的图形。(其中调用参数2≤f1、f2 ≤20 Hz; 0.5≤ m1, m2 ≤ 2)
时间: 2025-01-03 16:44:26 浏览: 9
在MATLAB中,`mwave`函数的目的是生成两个正弦波信号`y1`和`y2`,它们基于输入频率(f1和f2)和幅度(m1和m2)的参数。这个函数可以按照以下步骤编写:
```matlab
function [y, y1, y2] = mwave(fl.ml, f2, m2)
% 输入验证
if ~all(2 <= [fl.ml, f2] & [fl.ml, f2] <= 20)
error('Frequency values must be between 2 and 20 Hz.');
end
if ~all(0.5 <= [m1, m2] & [m1, m2] <= 2)
error('Amplitude values must be between 0.5 and 2.');
end
% 创建时间向量
tE = linspace(0, 2, 500); % 时间范围从0到2秒,500个样点
% 生成第一个正弦波
f1 = fl.ml; % 假设fl.ml用于表示第一个频率
y1 = m1 * sin(2*pi*f1*tE);
% 生成第二个正弦波
f2 = f2;
y2 = m2 * sin(2*pi*f2*tE);
% 合并信号
y = y1 + y2;
% 绘制图形
figure;
subplot(3,1,1);
plot(tE, y1, 'b', 'LineWidth', 1.5);
title('First Wave (f1)');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(3,1,2);
plot(tE, y2, 'g', 'LineWidth', 1.5);
title('Second Wave (f2)');
xlabel('Time (s)');
subplot(3,1,3);
plot(tE, y, 'r', 'LineWidth', 1.5);
title('Combined Waves');
xlabel('Time (s)');
ylabel('Amplitude');
% 显示所有图
legend('y1', 'y2', 'y');
阅读全文