找回密码
 注册
Simdroid-非首页
查看: 189|回复: 31

Computer Exploration in Signals and System using MATALB中的练习

[复制链接]
发表于 2014-8-1 17:04:37 | 显示全部楼层 |阅读模式 来自 北京
最近在看这本书,但是发现似乎没有这本书的答案,请问谁知道哪可以找到这些练习题的答案呢?
 楼主| 发表于 2014-8-4 09:16:02 | 显示全部楼层 来自 北京
Simdroid开发平台
那我我的先贴上吧,希望可以得到大家的指点,欢迎讨论。
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-4 09:27:11 | 显示全部楼层 来自 北京
% Exercise1_2_a


% 此M文件将分别画出N=12,M=4、5、7、10,n=2*N-1时,sin(2*pi*M*n/N)的图形;

N=12;
n=0:2*N-1;
M1=4;
x_M_1=sin(2*pi*M1*n/N);
subplot(2,2,1),stem(n,x_M_1)
xlabel('n'),ylabel('sin(2*pi*4*n/12)')
M2=5;
x_M_2=sin(2*pi*M2*n/N);
subplot(2,2,2),stem(n,x_M_2)
xlabel('n'),ylabel('sin(2*pi*5*n/12)')
M3=7;
x_M_3=sin(2*pi*M3*n/N);
subplot(2,2,3),stem(n,x_M_3)
xlabel('n'),ylabel('sin(2*pi*7*n/12)')
M4=4;
x_M_4=sin(2*pi*M4*n/N);
subplot(2,2,4),stem(n,x_M_4)
xlabel('n'),ylabel('sin(2*pi*10*n/12)')


%%
% 离散时间复指数信号的基波周期 N=m*(2*pi/w),在此其基波周期T=m*(2*pi/(2*pi*M/N))
%                                                                                         =m*(N/M)
% M和N为任意的整数且都不为零时,如果M和N没有公共因子,那么信号的基波周期就是m=M时候的T值;
%  如果M和N有公共因子而且N>M,那么信号的基波周期就是m取使N/M为整数的最小值时的T值。
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 13:36:09 | 显示全部楼层 来自 北京
% Exercise1_2_b
% 本M文件在0<n<9区间内分别画出k=1/2/4/6时,sin(wk*n)的信号图形;
%                      其中:wk=2*pi*k/5;

n=0:9;
k1=1;
wk1=2*pi*k1/5;
x_k_1=sin(wk1*n);
subplot(2,2,1),stem(n,x_k_1)
xlabel('n'),ylabel('sin(2*pi*n/5)')
k2=2;
wk2=2*pi*k2/5;
x_k_2=sin(wk2*n);
subplot(2,2,2),stem(n,x_k_2)
xlabel('n'),ylabel('sin(4*pi*n/5)')
k3=4;
wk3=2*pi*k3/5;
x_k_3=sin(wk3*n);
subplot(2,2,3),stem(n,x_k_3)
xlabel('n'),ylabel('sin(8*pi*n/5)')
k4=6;
wk4=2*pi*k4/5;
x_k_4=sin(wk4*n);
subplot(2,2,4),stem(n,x_k_4)
xlabel('n'),ylabel('sin(12*pi*n/5)')

%%
% 前三个信号都是唯一的,但第四给信号与第一个信号完全相同,这是因为:
% 离散时间复指数信号在频率w+2*pi与频率w时时完全一样的,因为w1=2*pi/5,w4=12*pi/5=2*pi/5+2*pi;所以信号1与信号4完全一样。
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 13:36:58 | 显示全部楼层 来自 北京
% Exercise1_2_c
% 取N=6,分别判断以下信号是否是周期的:
%        x1=cos(2*pi*n/N)+2*cos(3*pi*n/N)
%        x2=2*cos(2*n/N)+cos(3*n/N)
%        x3=cos(2*pi*n/N)+3*sin(5*pi*n/(2*N))
% 如果是周期的,画出两个周期的图形;如果不是,就画出0<=n<=4*N的图形,其判断见文件结尾

N=6;
n1=0:24;
x1=cos(2*pi*n1/N)+2*cos(3*pi*n1/N);
subplot(3,1,1),stem(n1,x1)
xlabel('n'),ylabel('cos(pi*n/3)+2*cos(pi*n/2)')
n2=0:24;
x2=2*cos(2*n2/N)+cos(3*n2/N);
subplot(3,1,2),stem(n2,x2)
xlabel('n'),ylabel('2*cos(2*n/3)+cos(n/2)')
n3=0:48;
x3=cos(2*pi*n3/N)+3*sin(5*pi*n3/(2*N));
subplot(3,1,3),stem(n3,x3)
xlabel('n'),ylabel('cos(pi*n/3)+3*sin(5*pi*n/12)')
% 信号1和3都是周期的,而信号2不是周期的,因为信号2的基波周期N2=m*(2*pi/(2/N))
%                                                         =m*N*pi
% 无论m取何值,N2都不可能是整数,而离散信号的基波周期必须是整数,所以N2不是周期函数

% 至于信号1和3,可以看做是连续信号在离散点上的采样值,比如说信号1,左边基波周期是6,右边的基波周期是4,为了使整个
% 信号重复,左边和右边的每一项都要经过其基波周期的整数倍,完成这个过程的最小取值是12,也就是说信号1的基波周期是12;

% 信号3,左边的基波周期是6,右边的基波周期为24,所以信号3的基波周期为24。
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 13:38:12 | 显示全部楼层 来自 北京
% Exercise1_2_d
% n=0:31,分别画出x1=sin(pi*n/4).*cos(pi*n/4)
%               x2=cos(pi*n/4).^2
%               x3=sin(pi*n/4).*cos(pi*n/8)
% 的图形,并说明不借助于MATLAB怎么确定其基波周期

n=0:31;
x1=sin(pi*n/4).*cos(pi*n/4);
x2=cos(pi*n/4).^2;
x3=sin(pi*n/4).*cos(pi*n/8);
subplot(3,1,1),stem(n,x1)
xlabel('n'),ylabel('sin(pi*n/4).*cos(pi*n/4)')
subplot(3,1,2),stem(n,x2)
xlabel('n'),ylabel('cos(pi*n/4).^2')
subplot(3,1,3),stem(n,x3)
xlabel('n'),ylabel('x3=sin(pi*n/4).*cos(pi*n/8)')


%%
%如果不依赖MATLAB,可以先通过积化和差公式把三个信号给转换成和差形式,然后再求其基波频率。




%%
% Exercise1_2_e
% 两个周期信号的相加不一定还是周期信号,如上所画的相加周期信号虽说都仍是周期信号,但是如果特殊性的,
% 比如说初始相位相同,基波频率相同,幅值相反的两个周期信号相加,最后的结果0,不再是周期的了。
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 13:38:58 | 显示全部楼层 来自 北京
% Exercise1_3_a
% 简单的画出离散时间序列及其变换

%%
% Exercise1_3_a

n=-3:7;
xn=[0,0,0,2,0,1,-1,3,0,0,0];
stem(n,xn)
xlabel('n'),ylabel('x[n]')
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 13:39:44 | 显示全部楼层 来自 北京
% Exercise1_3_b

% y1[n]=x[n-2]  x[n]信号超前了2,ny1向量为-1:9
% y2[n]=x[n+1]  x[n]信号延迟了1,ny2向量为-4:6
% y3[n]=x[-n]   x[n]信号以n=0翻转,ny3向量为-7:3
% y4[n]=x[n+1]  x[n]信号延迟了1,ny4向量为-4:6

%%
% Exercise1_3_c


x=[0,0,0,2,0,1,-1,3,0,0,0];
y1=x;
y2=x;
y3=x;
y4=x;
ny1=-1:9;
subplot(2,2,1),stem(ny1,y1)
xlabel('ny1'),ylabel('y1')
ny2=-4:6;
subplot(2,2,2),stem(ny2,y2)
xlabel('ny2'),ylabel('y2')
ny3=-7:3;
subplot(2,2,3),stem(fliplr(ny3),y3)
xlabel('ny3'),ylabel('y3')
ny4=-4:6;
subplot(2,2,4),stem(ny4,y4)
xlabel('ny4'),ylabel('y4')
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 13:41:14 | 显示全部楼层 来自 北京
% Exercise1_4_a

% y[n]=sin((pi/2)*x[n])
% y1[n]=sin((pi/2)*x1[n]),y2[n]=sin((pi/2)*x2[n],
% 令 x3[n]=a*x1[n]+b*x2[n]
% y3[n]=sin((pi/2)*x3[n])
%      =sin((pi/2)*(a*x1[n]+b*x2[n]))
%      !=a*y1[n]+b*y*2[n]
% 所以y[n]=sin((pi/2)*x[n])不满足齐次性和可加性,非线性

n=-10:10;
deta_n=[zeros(1,10),1,zeros(1,10)];
x1=deta_n;
y1=sin((pi/2)*x1);
x2=2*deta_n;
y2=sin((pi/2)*x2);
a=2;
b=3;
x3=a*x1+b*x2;
y3=sin((pi/2)*x3);
subplot(2,1,1),stem(n,y3)
xlabel('n'),ylabel('sin((pi/2)*(a*x1[n]+b*x2[n])')
y3_another=2*y1+3*y2;
subplot(2,1,2),stem(n,y3_another)
xlabel('n'),ylabel('a*y[1]+b*y[2]')
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 13:41:57 | 显示全部楼层 来自 北京
% Exercise1_4_a

% y[n]=sin((pi/2)*x[n])
% y1[n]=sin((pi/2)*x1[n]),y2[n]=sin((pi/2)*x2[n],
% 令 x3[n]=a*x1[n]+b*x2[n]
% y3[n]=sin((pi/2)*x3[n])
%      =sin((pi/2)*(a*x1[n]+b*x2[n]))
%      !=a*y1[n]+b*y*2[n]
% 所以y[n]=sin((pi/2)*x[n])不满足齐次性和可加性,非线性

n=-10:10;
deta_n=[zeros(1,10),1,zeros(1,10)];
x1=deta_n;
y1=sin((pi/2)*x1);
x2=2*deta_n;
y2=sin((pi/2)*x2);
a=2;
b=3;
x3=a*x1+b*x2;
y3=sin((pi/2)*x3);
subplot(2,1,1),stem(n,y3)
xlabel('n'),ylabel('sin((pi/2)*(a*x1[n]+b*x2[n])')
y3_another=2*y1+3*y2;
subplot(2,1,2),stem(n,y3_another)
xlabel('n'),ylabel('a*y[1]+b*y[2]')
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 13:42:39 | 显示全部楼层 来自 北京
%   Exercise1_4_c

%   y[n]=log(x[n])不是稳定的
%   一个稳定系统,若其输入是有界的(即输入的幅度不是**增长的),则系统的输出也必须是有界的,因此不可能发散
n=[-10,10];
x_n=[zeros(1,10),ones(1,11)];
y_n=log(x_n);
stem(n,y_n)
xlabel('n'),ylabel('y[n]=log(x[n])')

%%
%   给定一个有界的阶跃函数u[n],得出**的y[n],证明y[n]不是一个稳定的系统。
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 13:43:25 | 显示全部楼层 来自 北京
%   Exercise1_4_d
%   系统y[n]=sin((pi/2)*x[n])不是可逆的

n=0:9;
x_n=2*n;
y_n=sin(x_n*pi/2);
stem(n,y_n)
xlabel('n')
ylabel('sin((pi/2)*x[n])')

%%
%   y[n]的输入基本都是0,当输出为0时,不能确定是哪个输入,所以系统不可以。
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 13:44:09 | 显示全部楼层 来自 北京
%   Exercise1_4_e
%   y[n]=x[n]^3的线性,时不变性,因果性,稳定性和可逆性,对于不具有的性质用MATLAB反例证明

%   非线性反例
n=1:10;
x_1n=3*n;
x_2n=5*n;
y_1n=x_1n.^3;
y_2n=x_2n.^3;
a=2;
b=3;
x_3n=a*x_1n+b*x_2n;
y_3n=x_3n.^3;
subplot(2,1,1),stem(n,y_3n)
xlabel('n'),ylabel('y_3n')
y_3n_2=a*y_1n+b*y_2n;
subplot(2,1,2),stem(n,y_3n_2)
xlabel('n'),ylabel('a*y_1n+b*y_2n)')

%   y[n]=x[n]^3
%   令y1[n]=x1[n]^3,y2[n]=x2[n]^3,x3=a*x1[n]+b*x2[n]
%   y3[n]=x3[n]^3=(a*x1[n]+b*x2[n])^3!=a*y1[n]+b*y2[n]
%   所以y[n]不是线性的

%%
%   系统是时不变的
%   令 y1[n]=x1[n]^3,x2[n]=x1[n-N]
%   y2[n]=x2[n]^3=x1[n-N]^3=y1[n-N]
%   所以系统是时不变的

%%
%   系统仅仅是输入x[n]的当前值影响了输出y[n]的当前值,所以系统是因果的。

%%
%   令B为任意一个整数,只要对全部的n都有:
%   |x[n]|<B;
%   -B<x[n]<B;
%   如果x[n]满足上式,就有y[n]满足
%   -B^3<y[n]<B^3;
%   |y[n]|<B^3;
%   即任何输入被一个正整数B界定的话,那么相应的输出就保证界定在B^3,所以系统是稳定的。

%%
%   系统的输入与输出一一相对应,所以系统是可逆的。
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 13:44:56 | 显示全部楼层 来自 北京
%   Exercise1_4_f
%   y[n]=n*x[n]的线性,时不变性,因果性,稳定性和可逆性,对于不具有的性质用MATLAB反例证明

%   线性
%   令y1[n]=n*x1[n],y2[n]=n*x2[n],x3=a*x1[n]+b*x2[n]
%   y3[n]=n*x3[n]=n*(a*x1[n]+b*x2[n])=a*y1[n]+b*y2[n]
%   所以y[n]不是线性的

%%
%   系统是时变的
n=1:10;
x_1n=3*n;
y_1n=n.*x_1n;
subplot(2,1,1),stem(n,y_1n)
xlabel('n'),ylabel('y[n]')
x_2n=n-3;
y_2n=(n-2).*x_2n;
subplot(2,1,2),stem(n-3,y_2n)
xlabel('n-3'),ylabel('y[n-3]')

%%
%   系统仅仅是输入x[n]的当前值影响了输出y[n]的当前值,所以系统是因果的。

%%
%   系统不是稳定的
n=1:100;
xn=3*ones(1,size(n,2));
yn=n.*xn;
figure(2)
stem(n,yn)
xlabel('n'),ylabel('y[n]')
%   虽然给定了x[n]的界定,但随着n的增大,y[n]会无休止的增长,所以是不稳定的

%%
%   系统不是可逆的
n=1:100;
x_n=0;
y_n=n*x_n;
figure(3)
stem(n,y_n)
xlabel('n'),ylabel('y[n]')
%   同样的输出,不一样的输入都可以导致,所以系统不可逆
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 13:45:43 | 显示全部楼层 来自 北京
%   Exercise1_4_g
%   y[n]=x[2*n]的线性,时不变性,因果性,稳定性和可逆性,对于不具有的性质用MATLAB反例证明

%   线性
%   令y1[n]=x1[2*n],y2[n]=x2[2*n],x3[2*n]=a*x1[2*n]+b*x2[2*n]
%   y3[n]=x3[2*n]=a*x1[2*n]+b*x2[2*n]=a*y1[n]+b*y2[n]
%   所以y[n]是线性的

%%
%   系统是时变的
n=1:10;
x_1n=2*n;
y_1n=x_1n;
subplot(2,1,1),stem(n,y_1n)
xlabel('n'),ylabel('y[n]')
x_2n=2*(n-1);
y_2n=x_2n;
subplot(2,1,2),stem(n-1,y_2n)
xlabel('n-1'),ylabel('y[n-1]')
%   线性时不变系统应该不随时间的推移而变化,对应于[1,9]是变化的,所以不是时变系统。
%%
%   系统仅仅是输入x[n]的当前值影响了输出y[n]的当前值,所以系统是因果的。

%%
%   令B为任意一个整数,只要对全部的n都有:
%   |x[2*n]|<B;
%   -B<x[2*n]<B;
%   如果x[2*n]满足上式,就有y[n]满足
%   -B<y[n]<B;
%   |y[n]|<B;
%   即任何输入被一个正整数B界定的话,那么相应的输出就保证界定在B,所以系统是稳定的。

%%
%   每一个输入对应每一个输出,所以系统是可逆的。
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 13:55:10 | 显示全部楼层 来自 北京
function y=diffeqn(a,x,yn1)

% Exercise1_5_a
% 差分方程为一阶自递归 y[n]=a*y[n-1]+x[n];
% x以行向量给出
% 由于在MATLAB里数组的索引从1开始,y[-1]是没有意义的,所以把x及y的索引都加1后再进行处理

N=size(x,2)
for n=1:N
    if n==1
        y(n)=a*yn1+x(n);
    else
        y(n)=a*y(n-1)+x(n);
    end
end
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 14:03:42 | 显示全部楼层 来自 北京
% Exercise1_5_b
% a=1,y[-1]=0时,x为单位脉冲序列和单位阶跃信号时,画出在0<=N<=30的曲线。

n=1:size(x1,2);
x1=[1,zeros(1,30)];
y1=diffeqn(1,x1,0);
subplot(2,1,1),stem(n,y1)
x2=ones(1,31);
y2=diffeqn(1,x2,0);
subplot(2,1,2),stem(n,y2)

% 其响应图如下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 14:20:36 | 显示全部楼层 来自 北京
% Exercise1_5_c
% a=1,y[-1]=-1时,x为单位阶跃信号和2倍单位脉冲信号时,画出在0<=N<=30的曲线。
% 并画出2*y1[n]-y2[n],解释差为什么不为零

x1=ones(1,31);
y1=diffeqn(1,x1,-1);
n=1:size(x1,2);
subplot(2,1,1),stem(n,y1)
x2=2*ones(1,31);
y2=diffeqn(1,x2,-1);
subplot(2,1,2),stem(n,y2)

figure(2)
stem(n,2*y1-y2)


% 差分方程为 y[n]=a*y[n-1]+x[n]
% 2*y1[n]=2*a*y1[n-1]+2*u[n]
%   y2[n]=  a*y2[n-1]+2*u[n]
% 在索引值相对应的情况下,上下二式相减,得Y[n]=a*y[n-1],因为y[-1]=-1,所以所画一些列值都为-1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 14:28:16 | 显示全部楼层 来自 北京
% Exercise1_5_d
% a=1/2
% x[n]=u[n]
% 画出y[-1]=0和1/2两种情况下在0<=n<=30的线图,并比较差异

x=ones(1,31);
n=1:size(x,2);
y1=diffeqn(1/2,x,0);
subplot(2,1,1),stem(n,y1)
y2=diffeqn(1/2,x,1/2);
subplot(2,1,2),stem(n,y2)


% 差别在于当y[-1]取1/2时,在增加到最终值前,增加的幅度大。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2014-8-19 14:48:56 | 显示全部楼层 来自 北京
% Exercise1_6_a

x=sym('sin(2*pi*t/T)');
x5=subs(x,'T',5);
ezplot(x5,[0,10])
grid on

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-1 19:08 , Processed in 0.047730 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表