在matlab中绘制波形图 | 您所在的位置:网站首页 › 用matlab画信号波形图 › 在matlab中绘制波形图 |
总目录 https://app.yinxiang.com/fx/3e870d81-b01c-4e72-a224-838688d33f28 Matlab学习 https://app.yinxiang.com/fx/3e5ecb5e-28f2-4492-848d-baaaa8df0e1c 一,10.1,用电量。 1,导入ele.mat数据,用2-5之间随机数代替 2,创建prices,usage变量 3,res包含usage第一列数据 4,comm表示usage第二列 5,ind 表示usage第三列 6,yrs 表示1991-2013 7,蓝色b虚线绘制res对yrs图 8,黑色k点线绘制comm对yrs图 9,红色m点划线绘制ind对yrs图 二,10.2,音频频率 1,fs=10 2,t=0~20,间隔为1/fs 3,y=sin(1.8*2Πt)+sin(2.1*2Πt) 4,y对t的图 5,yfft变量,表示y的离散傅里叶变换 6,n表示y中元素数目(numel) 7,f表示向量,0开头,fs*(n-1)/n结尾,间距为fs/n 8,绘制abs(yfft)对f的图 三,14.1行星运动。 1,算出lambdaEnd=start-delta 2,创建lambda范围start到end,步长delta 3, spectra第六列提取到s向量 4,s与lambda的函数,对数刻度,点标实线。 tip: 这里因为定义S的变量失误。我将stardata的数据(357*10),赋值给s,用s=s(:,6),结果会得到一个只有一列的向量(357*1)。运行一次,s结果正确。 修改了之后的代码后,重新运行,这时候报错了。就是因为,此时的s已经由一个十列的向量,变成了一列的向量,当然不会有第六列了。所以报错的内容是,此处的索引超出数组边界(不能超出1)。 接着,跟视频里一样定义spectra,讨论群里问了一下数据类型转换的方法。这里因为导入的问题,将stardata的数据导入成了table类型,不能参与计算,用了table2array命令,将table类型转换成double类型。 之后便解决了’s‘处的索引超出数组边界的问题。 之后意识到自己导入数据时出错,重新导入数据,改变一下输出类型,也就解决了table类型变成double类型问题。 四,用Matlab绘制波形 原文链接: https://zhidao.baidu.com/question/1988193710240575547.html 到此处,发现与网页中图差距太大,发现是坐标轴范围不合适。用昨天用到的axis命令设置坐标轴范围。 原始波形 1,定义变量t=0到(N-1)/fs,间隔为1/fs 2,x=sin(200Πt) 3,绘出x对t的图像 4,改为合适的坐标范围(0~0.2,-1.3~1.3) 频谱分析 5,求x的离散傅里叶变换,赋值于a 6,fft的输出值为复数,要绘制它们的模(幅值),可以用abs函数。 给a赋值为abs(a)*2/N 7,定义f的范围是0~(N-1)*fs/N,间隔为fs/N 8,绘出a对f的图像 逆变换后时域图 9,定义变量b=a的傅里叶变换值*N/2 10,绘出b对t的图像 11,改为合适的坐标范围(0~0.2,-1.3~1.3) N=1024; fs=1024; t=0:1/fs:(N-1)/fs; x=sin(200*pi*t); %原始波形 figure plot(t,x)%%%波形 set(gca,'xlim',[0,0.2],'ylim',[-1.3,1.3]) title('原始波形图') %频谱分析 a=fft(x); a=abs(a)*2/N; f=0:fs/N:(N-1)*fs/N; figure plot(f,a) title('幅频谱图') %逆变换后时域图 b=ifft(a)*N/2; figure plot(t,b) set(gca,'xlim',[0,0.2],'ylim',[-1.3,1.3]) 举报/反馈 |
CopyRight 2018-2019 实验室设备网 版权所有 |