信号在MATLAB中的运算——信号的翻转与移位

序列的翻转和移位

序列翻转的表达式为:y(n) = x(-n);

序列移位的表达式为:y(n) = x(n-n0);

在 Matlab 中,翻转运算有函数fliplr实现。

设序列 x(n) 用样值向量 x 和位置向量 nx 来描述,翻转后的序列y(n)用样值向量 y 和位置向量 ny 来描述.

y = fliplr(x)
ny = -fliplr(nx)

设序列 x(n) 用样值向量 x 和位置向量 nx 来描述,移位后的序列y(n)用样值向量 y 和位置向量 ny 来描述.

y = x;          % 样值向量不变
ny = nx + n0;   % n0>0,表示向右移动 n0个位置;n0<0,表示向左移动 n0个位置。

1、序列翻转示例

% E_5_11.m
% 序列翻转示例
clear, clc, clf;
nx = -2:5;
x = [2 3 4 5 6 7 8 9];
ny = -fliplr(nx);
y = fliplr(x);
subplot(121), stem(nx,x,'.');
axis([-6 6 -1 9]); title('原序列'); grid on;
xlabel('n'); ylabel('x(n)');

subplot(122), stem(ny,y,'.');
axis([-6 6 -1 9]); title('翻转后的序列'); grid on;
xlabel('n'); ylabel('y(n)'); 
set(gcf, 'color', 'w');

信号在MATLAB中的运算——信号的翻转与移位_信息与通信

2、序列移位示例

% E_5_12.m
% 序列移位示例
figure;
nx = -2:5; x = [9 8 7 6 5 5 4 5];
y = x; ny1 = nx + 3; ny2 = nx - 2;
subplot(311), stem(nx,x,'.');
axis([-5 9 -1 9]); grid;
xlabel('n'); ylabel('x(n)'); title('原序列');

subplot(312), stem(ny1,y,'.');
axis([-5 9 -1 9]); grid;
xlabel('n'); ylabel('y1(n)'); title('右移3位后的序列');

subplot(313), stem(ny2,y,'.');
axis([-5 9 -1 9]); grid;
xlabel('n'); ylabel('y2(n)'); title('左移2位后的序列');

信号在MATLAB中的运算——信号的翻转与移位_信息与通信_02