已知x(n)=1,n=-2,-3;x(n)=-4,n=-1;x(n)=0.25n,n=0,1,2,…,10;x(n)=0,其他n,用matlab求出序列x(n-1)、x(2n-4)、x(2-n),并绘制出他们的波形图
时间: 2024-12-22 21:25:16 浏览: 12
在MATLAB中,你可以使用`for`循环、条件语句以及向量化的操作来计算给定序列的各个部分。首先,我们需要创建一个向量`n`覆盖所有的情况,并根据输入的条件生成相应的`x(n)`值。
```matlab
% 定义n的范围
n = -10:1:10; % 包含边界值
% 初始化x(n)向量,根据给出的规则填充
x_n = zeros(size(n));
x_n(n == -2) = 1;
x_n(n == -3) = 1;
x_n(n == -1) = -4;
x_n(ismember(n, [0, 1, 2, ..., 10])) = 0.25 * n; % 注意ismember函数的使用
x_n(isinf(n)) = 0; % 将非定义范围设为0
% 计算x(n-1), x(2n-4), 和 x(2-n)
x_n_minus_1 = x_n - 1; % n-1 case
x_2n_minus_4 = x_n(2*n - 3); % 只取奇数位置的2n-4对应值
x_2_minus_n = -x_n; % 对于每个n,2-n就是它的负值
% 绘制波形图
figure;
subplot(3,1,1);
plot(n, x_n, 'o-r', 'LineWidth', 2);
title('Original Sequence x(n)');
xlabel('n');
ylabel('x(n)');
subplot(3,1,2);
plot(n(1:end-1), x_n_minus_1(1:end-1), 'b-o', 'LineWidth', 2);
title('Sequence x(n-1)');
xlabel('n-1');
subplot(3,1,3);
plot(n, x_2n_minus_4, 'g-o', 'LineWidth', 2);
hold on;
plot(n, x_2_minus_n, 'm-o', 'LineWidth', 2);
title('Sequences x(2n-4) and x(2-n)');
xlabel('n');
legend('x(2n-4)', 'x(2-n)');
```
这个脚本会分别绘制原始序列`x(n)`,`x(n-1)`和`x(2n-4)`与`x(2-n)`的图形。注意`x(2n-4)`只考虑了奇数位置的`2n-4`,因为偶数位置不存在对应的`n`值。
阅读全文