matlab实验 数据可视化方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四数据可视化方法
[实验内容]
一.仿照运行,体会数据可视化方法。
1已知n=0,1,……,12,y=,运行下面程序,体会离散数据可视化方法。
说明:
·plot和stem指令均可以实现离散数据的可视化,但通常plot更常用于连续函数中特殊点的标记;而stem广泛运行与数字信号处理中离散点的图示。·用户在运行上面例程时会发现在命令窗口出现警告:Warning: Divide by zero!即警告程序中出现非零数除以0的指令。MATLAB对于这种情况并不中止程序,只是给该项赋值为inf以做标记。
2.下面时用图形表示连续调制波形y=sin(t)sin(9t),仿照运行,分析表现形式不同的原因。
二.编程实现。
1.用图形表示连续调制波形y=sin(t)sin(9t),过零点及其包络线,如下图所示。
2. 编写函数[x,n]=stepseq(n0,n1,n2),实现:
u(n)=, n为整数
并编写脚本文件实现:
x(n)=n·[u(n)-u(n-10)]+10[u(n-10)-u(n-20)], 0≤n≤20要求在脚
本文件中调用stepseq 函数,最后绘出序列x(n)在给定区间的波形图。
3.编写一个函数文件[y,n]=sigadd(x1,n1,x2,n2),实现两个对应样本之间的相加,其中x1是长度为n1的序列,x2是长度为n2的序列,n1、n2分
别是x1、x2的位置信息(n1、n2均为整数),如:
n1={ -3,-2,-1,0,1,2,3,4},对应的
x1={ 2, 3, 1,4,1,3,1,2};
n2={-4,-3,-2,-1,0,1,2},对应的
x2={ 1, 3, 2, 5,1,3,4}。
当调用函数[y,n]=sigadd(x1,n1,x2,n2)时,我们应该得到:
n={-4,-3,-2,-1,0,1,2,3,4},对应的
y={ 1, 5, 5, 6,5,4,7,1,2}。
仔细观察 sigadd 函数的功能。编好函数文件程序后,请在命令窗口调用,验证正确性,记录验证结果。
[实验结果]
一.1.
2.
二.1. t=0:0.001:pi; t=0:pi/1000:pi;
y1=@(t) sin(t).*sin(9*t);
y2=sin(t);
plot(t,y1(t),t,y2'*[1 -1],'r--') hold on
t0=linspace(0,pi,10);
for i=1:length(t0)
t00=fzero(y1,t0(i));
plot(t00,0,'o')
end
plot(pi,0,'o')
分析:没有画出过零点时的图形。
用find函数画不出,没找到其他的函数。
2. function [x,n]=stepseq(n0,n1,n2);
if n1≥n≥n0
u(n)=1;
else if n2≤n≤n0
u(n)=0;
end
n=0:20
x(n)=n·[u(n)-u(n-10)]+10[u(n-10)-u(n-20)];
stem(x(n))
Error: Function definitions are not permitted at the prompt or in scripts. 分析: matalb函数function不能在工作空间执行,函数文件应保存在M文件中,并且函数执行时是在函数特有的函数空间内进行的,而不在工作空间。
3.function [y,n]=sigadd(x1,n1,x2,n2)
n=(min(n1(1),n2(1)):max(n1(end),n2(end))); y1=zeros(1,length(n));
y2=y1;
y1(find((n>=n1(1))&(n<=n1(end))==1))=x1;
y2(find((n>=n2(1))&(n<=n2(end))==1))=x2;
y=y1+y2;
end