1. 完成本文档内容的自学阅读和其中各例题后子问题; Q1.1运行程序P1.1,以产生单位样本序列u[n]并显示它。
答: clf;
n=-10:20;
u=[zeros(1,10) 1 zeros(1,20)]; stem(n,u);
xlabel('时间序号n'); ylabel('振幅'); title('单位样本序列'); axis([-10 20 0 1.2])
Q1.2命令clf,axis,title,xlabel和ylabel的作用是什
么?
答:clf清除图对象,axis 控制轴刻度和风格的高层指令, title 设置图名,xlabel和ylabel设置横纵坐标轴名称。 Q1.3修改程序P1.1以产生带有延时11个单位样本的延迟单位样本序列ud[n]。运行修改的程序并显示产生的序列。
答:clf; n=0:30;
ud=[zeros(1,11) 1 zeros(1,19)]; stem(n,ud);
xlabel('时间序号n');ylabel('振幅'); title('单位样本序列'); axis([0 30 0 1.2])
Q1.4修改程序P1.1以产生单位步长序列s[n].运行修改后程序并显示产生的序列。
答:clf; n = 0:30; u = [1.*n]; stem(n,u);
title('Unit Sample Sequence'); axis([0 30 0 30])
Q1.5修改程序P1.1,以产生带有超前7个样本的延时单位阶跃序列sd[n]。运行修改后的程序并显示产生的序列。 答:clf; n = -15:30;
s=[zeros(1,8) ones(1,38)];
stem(n,s);
xlabel('Time index n');ylabel('Amplitude'); title('Unit Sample Sequence'); axis([-15 30 0 1.2]);
Q1.6 运行程序P1.2,以产生复数值的指数序列。 答:clf;
c = -(1/12)+(pi/6)*i; K = 2; n = 0:40; x = K*exp(c*n); subplot(2,1,1); stem(n,real(x));
xlabel('时间序号 n');ylabel('振幅');
title('实部'); subplot(2,1,2); stem(n,imag(x));
xlabel('时间序号 n');ylabel('振幅'); title('虚部');
Q1.7 哪个参数控制该序列的增长或衰减率?那个参数控制该序列的振幅?
答:参数c控制该序列的增长或衰减率;参数K控制该序列的振幅。
Q1.8 若参数c改为(1/12)+(pi/6)*i,将会发生什么情况?
Q1.9 运算符real和imag的作用是什么?
答:运算符real和imag的作用分别是提取运算数值x的“实部”和“虚部”,以便于接下来分别将“实部”和“虚部”成像。
Q1.10命令subplot的作用是什么?
答:命令subplot的作用是使“实部”和“虚部”用两张图像呈现出来,subplot(a,b,c),其中a代表图像分两行呈现,b代表图像分一列呈现,a代表第a行的第b列图像。 Q1.11 运行程序P1.3,以产生实数值的指数序列。 答:clf; n = 0:35; a = 1.2;
K = 0.2; x = K*a.^n; stem(n,x);
xlabel('时间序号 n'); ylabel('振幅');
Q1.12 哪个参数控制该序列的增长或者衰减率?哪个参数控制该序列的振幅?
答:参数a控制该序列的增长或者衰减率;参数K控制该序列的振幅。
Q1.13 算数运算符^和.^之间的区别是什么?
答:运算符“^”表示a的指数是n这个序列;运算符“.^”表示a的指数分别是n这个序列中的每一个数字,即对应的每一个元素。
Q1.14 若参数a小于1,会发生什么情况?将参数a改为0.9,将参数K改为20,再次运行程序P1.3.
答:(1)若参数a小于1,指数序列在“n=0:35”上是衰减的序列;
(2)将k改为20后的图像如图所示:
Q1.15 该序列的长度是多少?怎么样才能改变它? 答:该序列的长度是35;通过改变“n=0:35”中的“35”这个数字可以改变序列的长度。
Q1.16 使用MATLAB命令sum(s.*s)可计算用向量s表示的实数序列s[n]的能量。试求在习题Q1.11和习题Q1.14中产生的实数值指数序列x[n]的能量。 答:Q1.11中:ans=4.5673e+004; Q1.14中:ans=2.1042e+003
Q1.17 运行程序P1.4以产生正弦序列并显示它。 答:n = 0:40;
f = 0.1; phase = 0; A = 1.5;
arg = 2*pi*f*n - phase; x = A*cos(arg); clf; stem(n,x); axis([0 40 -2 2]); grid;
title('正弦序列'); xlabel('时间序号 n'); ylabel('振幅'); axis;
Q1.18 该序列的频率是多少?怎样可以改变它?哪个参数控制该序列的相位?哪个参数控制该序列的振幅?该序列的周期是多少?
答:该序列的频率是0.1Hz;通过改变f的值可以此正弦序列的频率;参数phase控制该序列的初相位;参数A控制该序列的振幅;该序列的周期是10s。
Q1.19 该序列的长度是多少?怎么样可以改变它? 答:该序列的长度是41个时间单位,通过改变n的参数可以改变该序列的长度。
Q1.21 axis和grid命令的作用是什么?
答:axis的作用是规定图像显示的横纵坐标的范围;grid的作用是显示图像上面的“网格”。
Q1.22 修改程序P1.4,以产生一个,频率为0.9的正弦序列
并显示它。把此序列和习题Q1.17所产生的序列相比较。修改程序P1.4以产生一个频率为1.1的正弦序列并显示它。把此序列与Q1.17中产生的序列相比较,评价你的结果。 答:修改正弦序列的频率只需要改变程序中“f”的值即可,第一个改为f=0.9,结果如下图:
第二个改为f=1.1,结果图像如下:
结论:该图像与f=0.1时的图像一样,因为该正弦序列的最小周期是2pi的,而当f=0.9与f=1.1时正好是2pi的整数倍。 Q1.23 修改上述程序,以产生长度为50、频率为0.08、振幅为2.5、相移为90度的一个正弦序列并显示它。该序列的周期是多少? 程序:n = 0:49;
f = 0.08; phase =1.57; A = 2.5;
arg = 2*pi*f*n - phase; x = A*cos(arg); clf; stem(n,x);
axis([0 49 -2.5 2.5]); grid;
title('正弦序列'); xlabel('时间序号 n'); ylabel('振幅'); axis;
本序列周期为12.5s。
Q1.24 在程序P1.4中用plot命令代替stem命令,运行新程序。新图形与习题Q1.17中产生的图形有什么区别? 答:答:原图像是离散的,新图像是连续的,说明plot命令是用平滑的线将各点连接起来产生连续波,而stem命令则是用各点来产生离散波。
Q1.25 在程序P1.4中用stairs命令代替stem命令,运行新程序。新图形与习题Q1.17和习题Q1.24中产生的图形有什么区别?
答:Stairs函数是用直线将相应的点连接起来,类似于阶梯状。
Q1.26 编写一个MATLAB程序,以产生并显示一个长度为100的随机信号,该信号在区间[-2,2]中均匀分布。
答:clf;
x=(rand(1,100))*4-2; plot(x);
Q1.27 编写一个MATLAB程序,以产生并显示一个长度为75的高斯随机信号,该信号正态分布且均值为0,方差为3. 答:clf;
x=0+3*randn(1,75); stem(x);
Q1.28 编写一个MATLAB程序,以产生并显示五个长度为31的随机信号。 {X[n]}={A
}
其中振幅A和相位Φ是统计独立的随机变量,振幅在区间0
相位区间在0
答:clear,clc
n=0:31; B=0; A=0; f=100
A=4.*rand(1,length(n)); B=2.*pi*rand(1,length(n)); x=A.*cos(2*pi*f.*n+B);
内均匀分布。
subplot(5,1,1) plot(n,x)
axis([0 31 -4 4]); grid;
title('随机正弦信号一');xlabel('n');ylabel('幅值A');
A=4.*rand(1,length(n)); B=2.*pi*rand(1,length(n)); x=A.*cos(2*pi*f.*n+B); subplot(5,1,2) plot(n,x)
axis([0 31 -4 4]); grid;
title('随机正弦信号二');xlabel('n');ylabel('幅值A');
A=4.*rand(1,length(n)); B=2.*pi*rand(1,length(n)); x=A.*cos(2*pi*f.*n+B); subplot(5,1,3) plot(n,x)
axis([0 31 -4 4]); grid;
title('随机正弦信号三');xlabel('n');ylabel('幅值A');
A=4.*rand(1,length(n)); B=2.*pi*rand(1,length(n)); x=A.*cos(2*pi*f.*n+B); subplot(5,1,4) plot(n,x)
axis([0 31 -4 4]); grid;
title('随机正弦信号四');xlabel('n');ylabel('幅值A');
A=4.*rand(1,length(n)); B=2.*pi*rand(1,length(n)); x=A.*cos(2*pi*f.*n+B); subplot(5,1,5) plot(n,x)
axis([0 31 -4 4]); grid;
title('随机正弦信号五');xlabel('n');ylabel('幅值A');
Q1.29 运行程序P 1.5, 以产生所有相关的信号。 答:clf; R=51;
d=0.8*(rand(R,1)-0.5); m=0:R-1; s=2*m.*(0.9.^m); x=s+d';
subplot(2,1,1);
plot(m,d','r-',m,s,'g--',m,x,'b-.'); xlabel('时间序号n');
ylabel('振幅');
legend('d[n]','s[n]','x[n]'); x1=[0 0 x]; x2=[0 x 0]; x3=[x 0 0]; y=(x1+x2+x3)/3; subplot(2,1,2);
plot(m,y(2:R+1),'r-',m,s,'g--'); legend('y[n]','s[n]'); xlabel('时间序号n'); ylabel('振幅');
Q 1.30 未污染的信号s[n]是什么样的形式?加性噪声d[n] 是什么样的形式?
答:未污染的信号的形式应该为S[n]=2*m。*(0.9.^m);
表达式所表示的图形,不过自变量的取值为0-50的整数,因此图形应该为一系列离散的点; 加性噪声
d[n]=0.8*(rand(R,1)-0.5)的形式应该为在区间(-0.4,0.4)中均匀分布长度为51的随机信号,且为列向量51*1。 Q 1.31使用语句x=s+d 能产生被噪声污染的信号吗?若不能,为什么?
答:不能,因为s和d均是矩阵,d与s要想相加必须匹配,而矩阵d本身与矩阵s不匹配,必须把d转置变为d'才能与s进行相加。
Q 1.32 信号x1,x2 和x3与信号x 之间的关系是什么? 答:x1是x的延时,x2和x相等,x3超前于x。 Q 1.33 legend 命令的作用是什么?
答:legend 命令使得对MATLAB所画的图形进行注释 Q1.34:在载波信号xH[n]和调制信号xL[n]采用不同频率、不同调制指数m的情况下,运行程序P1.6,以产生振幅调制信号y[n]。 答:n=0:100; m=0.4; fH=0.1; fL=0.01;
xH=sin(2*pi*fH*n); xL=sin(2*pi*fL*n);
y=(1+m*xL).*xH stem(n,y); grid;
xlabel('时间序号 n'); ylabel('振幅');
Q1.35:算术运算符*和.*之间的区别是什么?
答: “*”是进行两个标量的相乘,所得结果仍为一个标量;“.*”是长度相同的行向量(或者列向量相乘),所得结果仍为长度不变的行向量(或者列向量)。
Q1.36:运行程序P 1.7, 以产生扫频正弦序列x[n]。 答:n=0:100; a=pi/2/100; b=0;
arg=a*n.*n+b*n;
x=cos(arg); clf; stem(n,x);
axis([0,100.-1.5,1.5]); title('扫频正弦信号'); xlabel('时间序号n'); ylabel('振幅'); grid; axis;
Q1.37:该信号最小频率和最大频率是多少? 答:最小频率是4HZ,最大频率是400HZ。
Q1.38:如何修改以上程序才能产生一个最小频率为0.1最大频率为0.3的扫频正弦信号?
答:n=0:100; a=0.1; b=0.3;
arg=a*n.*n+b*n; x=cos(arg); clf; stem(n,x);
axis([0,100,-1.5,1.5]); title('扫频正弦信号'); xlabel('时间序号 n');
Q1.39:在命令窗口键入who。此时窗口会显示什么信息?
答:
Q1.40:在命令窗口键入whos。此时窗口会显示什么信息?
Q1.41:编写MATLAB程序,以产生图1.1和图1.2中所示的方波和锯齿波序列,并将序列绘制出来。 答:产生方波程序: T=6; n=-5:0.1:2*T; duty=50; x=2*square(n,duty); stem(n,x,'*k'); grid on;
产生锯齿波程序: t=-6*pi:0.0001:6*pi; y=sawtooth(t); plot(t,y);
2. 给出如下函数的帮助英文说明和翻译(不局限于如下函 数,多翻译其他函数并翻译正确者可有加分) Square stem stairs zeros ones sawtooth Fliplr
方式:首先在matlab 命令窗中输入“doc stem”(这里以 stem 为例, 其他函数类似) , 在跳出帮助窗口中 “Description”内容即为翻译内容。
答:Description(Square)
x = square(t) generates a square wave with period 2π for the elements of time vector t. square(t) is similar to sin(t), but creates a square wave with peaks of ±1 instead of a sine wave.
x = square(t,duty) generates a square wave with specified duty cycle, duty, which is a number between 0 and 100. The duty cycle is the percent of the period in which the signal is positive.
翻译:x=square(t)生成一个基于时间向量t的周期为2π的方波。Square(t)类似于sin(t),但是产生一个峰值为±1的方波而不是正弦波。
X=square(t,duty)生成一个具有指定的工作周期的方波,工作,是从0到100的数字。工作周期是正向信号的周期的百分比。
Description(stem)
A two-dimensional stem plot displays data as lines extending from a baseline along the x-axis. A circle (the default) or other marker whose y-position represents the data value terminates each stem.
stem(Y) plots the data sequence Y as stems that extend from equally spaced and automatically generated values along the x-axis. When Y is a matrix, stem plots all elements in a row against the same x value.
stem(X,Y) plots X versus the columns of Y. X and Y must be vectors or matrices of the same size. Additionally, X can be a row or a column vector and Y a matrix with length(X) rows.
stem(...,'fill') specifies whether to color the circle at the end of the stem.
stem(...,LineSpec) specifies the line style, marker symbol, and color for the stem and top marker (the baseline is not affected). See LineSpec for more information.
stem(...,'PropertyName',PropertyValue,...) specifies property name and property value pairs for the stemseries objects the function creates. stem(axes_handle,...) plots into the axes object with the handle axes_handle instead of into the current axes object (gca).
h = stem(...) returns a vector of stemseries object handles in h, one handle per column of data in Y.
翻译:一个二维离散数据的火柴杆图展示了从一个基础线沿着X轴作为线性延伸的数据。一个循环(默认)或者其他标记了Y的坐标代表了每一茎的数值。 在二维离散数据的火柴杆图(Y)中数据顺序Y作为茎来从相等的空间和沿着x轴的自动迁移数据延伸。当Y是矩阵时,茎叶图所有元素在与相同x数值的相反一行中。
二维离散数据的火柴杆图(X,Y)中X与Y列相对。X和Y必须是向量或者相同尺寸的矩阵。另外,X可以使一行或者一列向量,Y是一个长度等于X的列。 二维离散数据的火柴杆图(...,'fill')指定在二维离散数据的火柴杆图循环终点是否改变颜色。
二维离散数据的火柴杆图(...,LineSpec)指定线性类型,标记符号,,和二维离散数据的火柴杆图的颜色和顶端标记(基线不受影响)。查看LineSpec获得更多信息。
二维离散数据的火柴杆图(...,'PropertyName',PropertyValue,...)指定特定的名字和特定的数值对作为stemseries项目的功能产生。
二维离散数据的火柴杆图(axes_handle,...)运用axes_handle绘制进入坐标轴的目标取代进入的最近的坐标轴目标。
h=stem(...)返回一个stemseries目标用h运行的矢量,一个运行处理Y上的每一列数据。
Description(stairs)
Stairstep graphs are useful for drawing time-history graphs of digitally sampled data.
stairs(Y) draws a stairstep graph of the elements of Y, drawing one line per column for matrices. The axes ColorOrder property determines the color of the lines.
When Y is a vector, the x-axis scale ranges from 1 to length(Y). When Y is a matrix, the x-axis scale ranges from 1 to the number of rows in Y. stairs(X,Y) plots the elements in Y at the locations specified in X. X must be the same size as Y or, if Y is a matrix, X can be a row or a column vector such that length(X) = size(Y,1)
stairs(...,LineSpec) specifies a line style, marker symbol, and color for the graph. (See LineSpec for more information.)
stairs(...,'PropertyName',propertyvalue) creates the stairstep graph, applying the specified property settings. See Stairseries properties for a description of properties.
stairs(axes_handle,...) plots into the axes with the handle axes_handle instead of into the current axes object (gca).
h = stairs(...) returns the handles of the stairseries objects created (one per matrix column).
[xb,yb] = stairs(Y,...) does not draw graphs, but returns vectors xb and yb such that plot(xb,yb) plots the stairstep graph. 翻译:阶层曲线是对于绘制时程数字采样数据曲线很有用的。
阶梯(Y)绘制一个Y所有元素的阶层曲线,描绘了矩阵的一行和每一列。坐标轴颜色顺序性质决定了曲线的颜色。
当Y是一个矢量,x轴的刻度幅度从1到长度(Y)。当Y时一个矩阵,x轴的刻度幅度从1到每一列在Y上的数字。
阶梯(X,Y)表示了Y上的元素在X上的指定位置。
X必须和Y是相同大小,如果Y是矩阵,X可以是一行或者一列矢量,比如length(X) = size(Y,1)。
阶梯(...,LineSpec)指定线的类型,标记符号,和曲线的颜色。(查看LineSpec获取更多信息)
阶梯(...,'PropertyName',propertyvalue)产生阶层曲线,申请指定的性能设置。查看Stairseries properties 来描述性能。
阶梯(axes_handle,...)运用axes_handle绘制进入坐标轴的目标取代进入的最近的坐标轴目标。
h=stairs(...)返回运行的stairseries的目标来产生每一个矩阵的列。 [xb,yb] = stairs(Y,...)不描绘曲线,但是返回矢量xb和yb,比如 plot(xb,yb) 产生阶层曲线。
Description(zeros)
B = zeros(n) returns an n-by-n matrix of zeros. An error message appears if n is not a scalar.B = zeros(m,n) or B = zeros([m n]) returns an m-by-n matrix of zeros.
B = zeros(m,n,p,...) or B = zeros([m n p ...]) returns an m-by-n-by-p-by-... array of zeros.
Note The size inputs m, n, p, ... should be nonnegative integers. Negative integers are treated as 0. If any trailing dimensions are 0, output B does not include those dimensions. B = zeros(size(A)) returns an array the same size as A consisting of all zeros.
zeros(m, n,...,classname) or zeros([m,n,...],classname) is an m-by-n-by-... array of zeros of data type classname. classname is a string specifying the data type of the output. classname can have the following values: 'double', 'single', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', or 'uint64'.
翻译:B = zeros(n)返回一个n作为n矩阵的零矩阵。如果n不是一个数量就会出现一个错误信息。
B = zeros(m,n,p,...) 或者 B = zeros([m n p ...])返回一个
m-by-n-by-p-by-..的零阵列。(注释:m, n, p, ...输入的大小应该是正整数,负整数会被看作是0.如果任何尾数大小是0,输出B将不包含这些大小。) B = zeros(size(A))返回一个包含所有零矩阵和A相同尺寸的阵列。
zeros(m, n,...,classname) 或者 zeros([m,n,...],classname)是一个m-by-n-by-... 的数据类型名称零阵列。列别名称是排成一行的指定输出数据类型。列别名称可以有以下作用:'double', 'single', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 或者 'uint64'.
Description(ones)
Y = ones(n) returns an n-by-n matrix of 1s. An error message appears if n is not a scalar.
Y = ones(m,n) or Y = ones([m n]) returns an m-by-n matrix of ones. Y = ones(m,n,p,...) or Y = ones([m n p ...]) returns an m-by-n-by-p-by-... array of 1s.
Note The size inputs m, n, p, ... should be nonnegative integers. Negative integers are treated as 0. Y = ones(size(A)) returns an array of 1s that is the same size as A. ones(m, n,...,classname) or ones([m,n,...],classname) is an m-by-n-by-... array of ones of data type classname. classname is a string specifying the data type of the output. classname can have the following values: 'double', 'single', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', or 'uint64'
翻译:Y = ones(n)返回一个n作为n矩阵的1矩阵。如果n不是一个数量就会出现一个错误信息。
Y = ones(m,n) 或者 Y = ones([m n])返回一个m作为n的1矩阵。
Y = ones(m,n,p,...) 或者 Y = ones([m n p ...])返回一个m-by-n-by-p-by-...阵列作为1矩阵。(注释:m, n, p, ...输入的大小应该是正整数,负整数会被看作是0.)
Y = ones(size(A))返回一个大小和A一样的1矩阵。
ones(m, n,...,classname)或者ones([m,n,...],classname) 是一个m-by-n-by-... 的数据类型名称零阵列。列别名称是排成一行的指定输出数据类型。列别名称可以有以下作用:'double', 'single', 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64', 或者 'uint64'.
Description(sawtooth)
sawtooth(t) generates a sawtooth wave with period 2π for the elements of time vector t. sawtooth(t) is similar to sin(t), but creates a sawtooth wave with peaks of -1 and 1 instead of a sine wave. The sawtooth wave is defined to be -1 at multiples of 2π and to increase linearly with time with a slope of 1/π at all other times.
sawtooth(t,width) generates a modified triangle wave where width, a scalar parameter between 0 and 1, determines the point between 0 and 2π at which the maximum occurs. The function increases from -1 to 1 on the interval 0 to 2π*width, then decreases linearly from 1 to -1 on the interval 2π*width to 2π. Thus a parameter of 0.5 specifies a standard triangle wave, symmetric about time instant π with peak-to-peak amplitude of 1. sawtooth(t,1) is equivalent to sawtooth(t).
翻译:sawtooth(t) 产生基础时间向量t周期为2π的锯齿波。sawtooth(t)类似于sin(t)但是产生一个峰值从-1到1的锯齿波取代正弦波。锯齿波的确定是-1的倍数2π和随时间线性增加的和在所有其他时间斜率均为1 /π。 sawtooth(t,width)生成一个在宽度上缓和的三角波,0和1之间的标量参数,确定在0到2π之间最大可能的点。函数在开区间0到2π宽度上从1到-1线性增加,然后在开区间0到2π上从1到-1线性减小。因此指定了一个参数为0.5,峰间值为π,振幅为1的关于时间对称的标准的三角函数。sawtooth(t,1)相当sawtooth(t)。
Description(fliplr)
B = fliplr(A) returns A with columns flipped in the left-right direction, that is, about a vertical axis.
If A is a row vector, then fliplr(A) returns a vector of the same length with the order of its elements reversed. If A is a column vector, then fliplr(A) simply returns A.
翻译:B = fliplr(A)返回一列在左右方向上快速翻转的A,那就是,关于一个垂直坐标。
如果A是一行矢量,那么fliplr(A)返回一个和其元素的顺序相反的相同长度的矢量。如果A是一列矢量,那么fliplr(A)仅仅返回A。
3. 对如下函数所涉及各种应用尽可能举多个例子(程序及其 运行结果的直接截图),至少每种函数原型应用举一个例 子,不同种例子越多越好。 Square stem fliplr 答:square:
程序:t = 0:0.001:2; y = square(2.*pi.*t); plot(t,y);
axis([-0.5, 2.5, -1.5, 1.5]);
Stem: 程序:n=1:5;
x=zeros(1,5);
x(1)=1; x(2)=2;x(3)=3;x(4)=4;x(5)=5;
stem(x);
Fliplr:
程序:a=[1 2 3;4 5 6;7 8 9]
a=fliplr(a)
因篇幅问题不能全部显示,请点此查看更多更全内容