使用rand测试时间不变性的MATLAB

时间:2016-06-14 02:15:50

标签: matlab time signal-processing

所以给了我一个系统:y(n) = 10x(n)cos(0.25pi*n + 0.1pi)

我将通过绘制两个输入信号x(n)和x(n-2)及其相应的输出信号来测试系统是否是时不变的。假设X(n)是使用rand函数的10个元素的因果信号。

这是我到目前为止编写的代码:

clear all; clc; close all;
n = 0:9; n2 = 0:11;                        
xN1 = [rand(1,10) 0 0];                   %x(n)
xN2 = [0 0 rand(1,10)];                   %x(n-2)
yN1 = 10.*xN1.*cos(0.25.*pi.*n2+0.1.*pi); %y(n)
yN2 = 10.*xN2.*cos(0.25.*pi.*n2+0.1.*pi); %y(n-2)

figure, 
subplot(2,2,1)
    stem(n2,xN1),title('x1')
subplot(2,2,2)
    stem(n2,yN1),title('y1')
subplot(2,2,3)
    stem(n2,xN2),title('x2')
subplot(2,2,4)
    stem(n2,yN2),title('y2')

我的问题是我被要求策划的是什么? x1对x2,然后y1对y2?或者x1对n和x2对n,依此类推。

这是我使用当前代码http://imgur.com/iho2LDX获得的结果。这是否意味着信号是时变的?

1 个答案:

答案 0 :(得分:0)

不,您的代码存在问题。为了证明系统是时不变的,我们必须首先延迟输入并获得输出,然后延迟相同输入的输出,看看两个输入是否相同rand()改变y1的输入和y2所以你永远不能看到系统是否是时不变的 以下是时间不变系统的示例:

n0 = 1;                 %delay
n = 0:0.1:1;
x1 = [zeros(1,n0) cos(n)]%delaying the input
y1 = 2.5*x1;
x2 = [cos(n)]
y2 = [zeros(1,n0) 2.5*x2]%delaying the ouput
subplot(2,1,1)
stem(1:length(n) + 1,y1)
title('DELAYED INPUT')
subplot(2,1,2)
stem(1:length(n) + 1,y2)
title('DELAYED OUTPUT')

enter image description here

您可以观察到输入在第一次输入中保持相同的延迟,输出第二次延迟,但输出保持不变。 另外还有一件事你的输入不依赖于时间xn1和xn2不依赖于时间