已知信号x(n)=n sin(n),试显示在0<n<20区间的下列波形: y1(n)=x(n-3),y2(n)=x(-n),y3(n)=-x(n), y4(n)=x(-n+3),y5(n)=x(n/2)用MATLAB
时间: 2024-12-10 13:51:12 浏览: 8
在MATLAB中,我们可以使用`sin`函数生成原始信号`x(n)`,然后利用数组操作和基本数学运算来创建所需的变体`y1`到`y5`。以下是用MATLAB代码展示如何绘制这些波形:
```matlab
% 定义原信号 x(n) = n * sin(n)
n = 0:0.01:20; % 采样点,可以调整精度
x = n .* sin(n);
% 创建各变体
y1 = x(n - 3); % y1(n) = x(n-3)
y2 = x(-n); % y2(n) = x(-n)
y3 = -x; % y3(n) = -x(n)
y4 = x(-n + 3); % y4(n) = x(-n+3)
y5 = x(n / 2); % y5(n) = x(n/2)
% 绘制所有波形在同一图形上,方便对比
figure;
subplot(2,3,1), plot(n, x, 'b', 'LineWidth', 1.5), title('x(n)');
subplot(2,3,2), plot(n, y1, 'r', 'LineWidth', 1.5), title('y1(n)');
subplot(2,3,3), plot(n, y2, 'g', 'LineWidth', 1.5), title('y2(n)');
subplot(2,3,4), plot(n, y3, 'm', 'LineWidth', 1.5), title('y3(n)');
subplot(2,3,5), plot(n, y4, 'c', 'LineWidth', 1.5), title('y4(n)');
subplot(2,3,6), plot(n, y5, 'k', 'LineWidth', 1.5), title('y5(n)');
% 显示图例
legend('x(n)', 'y1(n)', 'y2(n)', 'y3(n)', 'y4(n)', 'y5(n)');
xlabel('n');
ylabel('Amplitude');
grid on;
```
运行这段代码会生成一系列波形图,显示了原始信号和变体的变化。
阅读全文