2016-06-14 16 views
0

所以我給定一個特定的系統:y(n) = 10x(n)cos(0.25pi*n + 0.1pi)MATLAB使用蘭特以測試時間不變性

而我測試如果系統是時不變的通過繪製兩個輸入信號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獲得的結果。這是否意味着信號是時間變量?

+0

我覺得維基[這](https://en.wikipedia.org/wiki/Time-invariant_system#Formal_example)實例說明了它很好。順便說一句,你不會延遲信號,它們是兩種不同的信號,因爲每次輸入rand時都是不同的(或隨機的),除非你指定種子。所以你應該先將'rand'的結果存儲在一個變量中,然後用它來創建'xN1'和'xN2'。 –

回答

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不隨時間變化的