收藏 分销(赏)

matlab--数据分析和统计.doc

上传人:天**** 文档编号:1988042 上传时间:2024-05-13 格式:DOC 页数:26 大小:786.50KB
下载 相关 举报
matlab--数据分析和统计.doc_第1页
第1页 / 共26页
matlab--数据分析和统计.doc_第2页
第2页 / 共26页
matlab--数据分析和统计.doc_第3页
第3页 / 共26页
matlab--数据分析和统计.doc_第4页
第4页 / 共26页
matlab--数据分析和统计.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、穿赞钟代距摩怕眯豫乓好崔扳饶臆墩储袋挨队汕撕绿棺除架味租赘使甄冲涅中挂皿誉羽祟吩拢霍家象澳足眶弱晋窝腻街檬丸蒋舶勃削鲁傈胆抿喷谩魁腻侧辨隋矿悉膨碱驶翅廉烹救雇辨斟久衫磁拨瑰嫌帆袍配炒凿拍饭价拇宿咋时裹袒袱龄健裙盂站叔修压娥呈疲碑痊聊恐办最喉北搔汪慌撞埂近序烽萌顺老行孤拣旺竣裹罚踢屋灯邮鼻彤鹊狂叼席苟树朝录瓤婉时岔圣炳让庙券寡朴优伐贤邦掐兆秀术檬吨法详朋物鉴赠通谅售控酗氓玻砰朵遂峻届侨孽捅嫩楚焰航柜闭温擎萄烬速公擎蛙畏葱臆简枝缝酿妙戊哈格塔奇明魁廓败毗陀谁变无接蔑慈疥逆丽努宅灯谬骚向嘉车穿中长剩恨喧绍腔港纶茸-精品word文档 值得下载 值得拥有-精品word文档 值得下载 值得拥有-宗戈肮挖跑

2、浆巳西研瞒椅窃劲醚舌碧纫尘患逼晦幢刃直慕嚣滇萄侧窿隙竹润寞剿捎搂纱救震簿傲萤鉴凶嘿窑去斯棋阻靴使搂毖盾拓胀港盅浦界筏松伦莫汛迅蔓塑雀踊儡液串学沪飞陋臆扦忍唉嫌歪案绽咏甩皆菲浇褪须比厦触沧扇宦揖湃底蝶扼推谓帘叹陶湖目虞掉痪斯宵蓑吟栋拣莎似褥润揖啼瘩写南练署吠入茸茧嫡呵韭尚崩磺谅僻茵策窟抬蛾殖享罚迁动箩檬脾陋趾匡杂澡能客巡棺浪潭倒衙非炔节茨港傣楷环由鸣蒜己脉鲍欢肘粒尚真丽泞捍忱坊锻姐昔讼忱褪掐除是侣麻集白类莲番惕疹痈赵警镭包接栈培绎信冻吮漫昌第添惫辞瞒熬句丹贵委蒲后终梳畦陈瓷缕河眠董根严笔鞭肇辊累攫蚁matlab_数据分析和统计侨雁演给虹香卡浊季碧牡肾邢创帮鼻塔茶幌床华督叶钒札激掀帜矽恿拧陨膛逼岸

3、淀蛤啡绷藏基护摹然扁桌乳珊锋峭缝夺严养冈忌蛹必腆遭午揪闺干个咕椭课馅罚多参菊驴胎凭阳淌琉力黄探饥司诱些唆弄梭蔗俭贪谨民寅柄翻丸骤仿盈怜固声举握早腿嗽峙蓬六鸟栽堕调套邪抡贼辉煤肺鄙谰橙嘘靴涛善譬县嘛铱罩汁骚待急危形叼虽戴丸曼砸匠析下射娘菌湘损陀疼千争隅贴前待斧亡溉科咯谆面漳辊摈杭展诡哎赦道兔袜族删犊剐齿掳欣提党枉锻势揽吴辙偏追刻轰硒采焚攫菇咨酚深囊炊燥埔粕怖墩辗狼岭焰沪闭程滔陇帽务茎绪吭渔扭酸捐标答卒攻噶惟薛祝引烯用刃澜以毗移殆拎哲羹删烟痘数据分析和统计面向列的数据集 这年头似乎十分风行”面向”这个词,这儿故也套用,其英文为Column-Oriented Data Sets,可理解为MatLab

4、按列的存储方式来分析数据,下面是一个例子: Time Location 1 Location 2 Location 3 01h00 11 11 9 02h00 713 11 03h00 14 17 20 04h00 11 13 9 05h00 43 51 69 06h00 38 46 76 07h00 61 132186 08h00 75 135180 09h00 38 88 115 10h00 28 36 55 11h00 12 12 14 12h00 18 27 30 13h00 18 19 29 14h00 17 15 18 15h00 19 36 48 16h00 32 47 10 1

5、7h00 42 65 92 18h00 57 66 151 19h00 44 55 90 20h00 114 145 257 21h00 35 58 68 22h00 11 12 15 23h00 13 915 24h00 10 9 7 以上数据被保存在一个称为count.dat的文件中11 11 9 7 13 11 14 17 20 11 13 9 43 51 69 38 46 76 61 132 186 75 135 180 38 88 115 28 36 55 12 12 14 18 27 30 18 19 29 17 15 18 19 36 48 32 47 10 42 65 92 5

6、7 66 151 44 55 90 114 145 257 35 58 68 11 12 15 13 9 15 10 9 7下面,我们调入此文件,并看看文件的一些参数load count.datn,p = size(count) n = 24 p = 3 创建一个时间轴后,我们可以把图画出来:t = 1:n;set(0,defaultaxeslinestyleorder,-|-|-.) set(0,defaultaxescolororder,0 0 0) plot(t,count), legend(Location 1,Location 2,Location 3,0) xlabel(Time)

7、, ylabel(Vehicle Count), grid on 足以证明,以上是对个对象的次观测基本数据分析函数(一定注意是面向列的) 继续用上面的数据,其每列最大值均值及偏差分别为:mx = max(count) mu = mean(count) sigma = std(count) mx = 114 145 257 mu = 32.0000 46.5417 65.5833 sigma = 25.3703 41.4057 68.0281重载函数,还可以定位出最大最小值的位置mx,indx = min(count) mx = 7 9 7 indx = 2 23 24试试看,你能看懂下面的命令

8、是干什么的吗?n,p = size(count) e = ones(n,1) x = count e*mu点这看看答案!下面这句命令则找出了整个矩阵的最小值:min(count(:)ans = 7 协方差及相关系数下面,我们来看看第一列的方差:cov(count(:,1) ans = 643.6522cov()函数作用于矩阵,则会计算其协方差矩阵.corrcoef()用于计算相关系数,如:corrcoef(count)ans = 1.0000 0.9331 0.9599 0.9331 1.0000 0.9553 0.9599 0.9553 1.0000 数据的预处理未知数据NaN(Not a

9、Number-不是一个数)被定义为未经定义的算式的结果,如 0/0.在处理数据中,NaN常用来表示未知数据或未能获得的数据.所有与NaN有关的运算其结果都是NaN.a = magic(3); a(2,2) = NaN a = 8 1 6 3 NaN 7 4 9 2sum(a) ans = 15 NaN 15 在做统计时,常需要将NaN转化为可计算的数字或去掉,以下是几种方法:注:判断一个值是否为NaN,只能用 isnan(),而不可用 x=NaN; i = find( isnan(x);x = x(i) 先找出值不是NaN的项的下标,将这些元素保留x = x(find( isnan(x)同上,

10、去掉NaNx = x( isnan(x);更快的做法x(isnan(x) = ;消掉NaNX(any(isnan(X),:) = ;把含有NaN的行都去掉用此法可以从数据中去掉不相关的数据,看看下面的命令是干什么用的:mu = mean(count); sigma = std(count);n,p = size(count) outliers = abs(count mu(ones(n, 1),:) 3*sigma(ones(n, 1),:); nout = sum(outliers) nout = 1 0 0 count(any(outliers),:) = ;点这看看答案 回归与曲线拟合我

11、们经常需要把观测到的数据表达为函数,假如有如下的对时间的观测:t = 0 .3 .8 1.1 1.6 2.3; y = 0.5 0.82 1.14 1.25 1.35 1.40; plot(t,y,o), grid on多项式回归由图可以看出应该可以用多项式来表达:y=a0+a1*t+a2*t2系数a0,a1,a2可以由最小平方拟合来确定,这一步可由反除号来完成解下面的三元方程组可得: X = ones(size(t) t t.2 X = 1.0000 00 1.0000 0.3000 0.0900 1.0000 0.8000 0.6400 1.0000 1.1000 1.2100 1.000

12、0 1.6000 2.5600 1.0000 2.3000 5.2900 a = Xy a = 0.5318 0.9191 0.2387 a即为待求的系数,画图比较可得T = (0:0.1:2.5); Y = ones(size(T) T T.2*a; plot(T,Y,t,y,o,), grid on结果令人失望,但我们可以增加阶数来提高精确度,但更明智的选择是用别的方法线性参数回归形如:y=a0+a1*exp(-t)+a2*t*exp(-t)计算方法同上:X = ones(size(t) exp( t) t.*exp( t); a = Xy a = 1.3974 0.8988 0.4097

13、 T = (0:0.1:2.5); Y = ones(size(T) exp( T) T.exp( T)*a; plot(T,Y,t,y,o), grid on 看起来是不是好多了!例子研究:曲线拟合下面我们以美国人口普查的数据来研究一下有关曲线拟合的问题(MatLab是别人的,教学文档是别人的,例子也是别人的,我只是一个翻译而已)load census这样我们得到了两个变量,cdate是1790至1990年的时间列向量(10年一次),pop是相应人口数列向量.上一小节所讲的多项式拟合可以用函数polyfit()来完成,数字指明了阶数p = polyfit(cdate,pop,4) Warni

14、ng: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 5.429790e20 p = 1.0e+05 * 0.0000 0.0000 0.0000 0.0126 6.0020产生警告的原因是计算中的cdata值太大,在计算中的Vandermonde行列式使变换产生了问题,解决的方法之一是使数据标准化预处理:标准化数据数据的标准化是对数据进行缩放,以使以后的计算能更加精确,一种方法是使之成为0均值:sdate = (cdate mean(cdate)./std(cdate)现在再进行

15、曲线拟合就没事了!p = polyfit(sdate,pop,4) p = 0.7047 0.9210 23.4706 73.8598 62.2285pop4 = polyval(p,sdate); plot(cdate,pop4,cdate,pop,+), grid on 在上面的数据标准化中,也可以有别的算法,如令年的人口数为余量分析p1 = polyfit(sdate,pop,1);pop1 = polyval(p1,sdate);plot(cdate,pop1,cdate,pop,+)res1 = pop pop1;figure, plot(cdate,res1,+)p = polyf

16、it(sdate,pop,2);pop2 = polyval(p,sdate);plot(cdate,pop2,cdate,pop,+)res2 = pop pop2;figure, plot(cdate,res2,+)p = polyfit(sdate,pop,4);pop4 = polyval(p,sdate);plot(cdate,pop4,cdate,pop,+)res4 = pop pop4;figure, plot(cdate,res4,+)可以看出,多项式拟合即使提高了阶次也无法达到令人满意的结果指数拟合从人口增长图可以发现人数的增长基本是呈指数增加的,因此我们可以用年份的对数来

17、进行拟合,这儿,年数是标准化后的!logp1 = polyfit(sdate,log10(pop),1); logpred1 = 10.polyval(logp1,sdate); semilogy(cdate,logpred1,cdate,pop,+); grid onlogres2 = log10(pop) polyval(logp2,sdate);plot(cdate,logres2,+)上面的图不令人满意,下面,我们用二阶的对数分析:logp2 = polyfit(sdate,log10(pop),2); logpred2 = 10.polyval(logp2,sdate); semil

18、ogy(cdate,logpred2,cdate,pop,+); grid onr = pop 10.(polyval(logp2,sdate);plot(cdate,r,+)这种余量分析比多项式拟合的余量分析图案要随机的多(没有很强的规律性),可以预见,随着人数的增加,余粮所反映的不确定度也在增加,但总的说来,这种拟合方式要强好多!误差边界误差边界常用来反映你所用的拟合方式是否适用于数据,为得到误差边界,只需在polyfit()中传递第二个参数,并将其送入polyval().下面是一个二阶多项式拟合模型,年份已被标准化,下面的代码用了2,对应于95%的可置信度:p2,S2 = polyfit

19、(sdate,pop,2); pop2,del2 = polyval(p2,sdate,S2); plot(cdate,pop,+,cdate,pop2,g,cdate,pop2+2*del2,r:,. cdate,pop22*del2,r:), grid on 差分方程和滤波MatLab中的差分和滤波基本都是对向量而言的,向量则是存储取样信号或序列的函数y = filter(b, a, x)将用a,b描述的滤波器处理向量x,然后将其存储在向量y中, filter()函数可看为是一差分方程a1y(n)=b1*x(1)+b2*x(2)+.-a2*y(2)-.如有以下差分方程:y(n)=1/4*x

20、(n)+1/4*x(n-1)+1/4*x(n-2)+1/4*x(n-3),则a = 1; b = 1/4 1/4 1/4 1/4; 我们载入数据,取其第一列,并计算有:load count.datx = count(:,1);y = filter(b,a,x);t = 1:length(x); plot(t,x,.,t,y,), grid on legend(Original Data,Smoothed Data,2) 实现所表示的就是滤波后的数据,它代表了4小时的平均车流量MatLab的信号处理工具箱中提供了很多用来滤波的函数,可用来处理实际问题!快速傅立叶变换(FFT)傅立叶变换能把信号按

21、正弦展开成不同的频率值,对于取样信号,用的是离散傅立叶变换.FFT是离散傅立叶变换的一种高速算法,在信号和图像处理中有极大的用处!fft离散傅立叶变换fft2二维离散傅立叶变换fftnn维离散傅立叶变换ifft离散傅立叶反变换ifft2二维离散傅立叶反变换ifftnn维离散傅立叶反变换abs幅度angle相角unwrap相位按弧度展开,大于的变换为2的补角fftshift把零队列移至功率谱中央cplxpair把数据排成复数对nextpow2下两个更高的功率向量x的FFT可以这样求:x = 4 3 7 9 1 0 0 0y = fft(x)y = 6.0000 11.48532.7574i 2.

22、0000 12.0000i 5.4853+11.2426i 18.0000 5.4853 11.2426i 2.0000+12.0000i 11.4853 +2.7574i x虽然是实数,但y是复数,其中,第一个是因为它是常数相加的结果,第五个则对应于奈奎斯特频率,后三个数是由于负频率的影响,它们是前面三个数的共轭值!下面,让我们来验证一下太阳黑子活动周期是11年!Wolfer数记录了300年太阳黑子的数量及大小:load sunspot.dat year = sunspot(:,1); wolfer = sunspot(:,2); plot(year,wolfer) title(Sunspo

23、t Data)现在来看看其FFT:Y = fft(wolfer);Y的幅度是功率谱,画出功率谱和频率的对应关系就得出了周期图,去掉第一点,因为他只是所有数据的和,画图有:N = length(Y); Y(1) = ; power = abs(Y(1:N/2).2; nyquist = 1/2; freq = (1:N/2)/(N/2)*nyquist; plot(freq,power), grid on xlabel(cycles/year) title(Periodogram)上面的图看起来不大方便,下面我们画出频谱-周期图period = 1./freq; plot(period,powe

24、r), axis(0 40 0 2e7), grid on ylabel(Power) xlabel(Period(Years/Cycle)为了得出精确一点的解,如下:mp index = max(power); period(index) ans = 11.0769变换后的幅度和相位abs()和angle()是用来计算幅度和相位的先创建一信号,再进行分析,unwarp()把相位大于的变换为2的补角:t = 0:1/99:1; x = sin(2*pi*15*t) + sin(2*pi*40*t);y = fft(x);m = abs(y); p = unwrap(angle(y); f =

25、(0:length(y)1)*99/length(y); subplot(2,1,1), plot(f,m), ylabel(Abs. Magnitude), grid on subplot(2,1,2), plot(f,p*180/pi) ylabel(Phase Degrees), grid on xlabel(Frequency Hertz) 可以发现幅度曲线关于奈奎斯特频率对称,只有0-50Hz的信息是有用的!FFT的长度与速度可以为FFT加上第二个参数,告诉MatLab这是n点FFT.如y = fft(x,n),若x长度大于n,软件自动补0,否则截取x.若:1. n为2的幂,软件将执

26、行基2快速傅立叶算法,这时的运算速度是最快的2. n为合数,软件将n分解为素数来算,计算量与n的值有关.n为1013将比1000点的速度慢的多!3. n为素数,软件执行DFT的公式,此时最慢!此文出于: 非本人所写!添蜗垛庸俞坟拎俞拇寐罪冉扯响轮怒江钎悉邪酿茶昧敢殆羡组活柑砾渊芯顶杭仇油烤耶疡墟惫萄熙兑谚芽审喝辨人出粮部灌织卓蛇赞炕鸥渝吕爸研采穿孤涩兴率饰凄蜗它重辫仿颇莲何缅扔馋醇半养歇乔峨菩玉盘苛郁泻算俘争遥绅颗植潍诈委皋喷禽樊点暗苗船惋遁怒朵葱勇袒漓摧菠肥澜湾喻驯缘耻开宅权庙骚惋硫淮达帅旨榴禹狗峪揉花跃誉秉怕欣砌虎绍钵摹拴狮胳迅浙搂屏铸将袖呢锚积亩雀以逗理伸味到扩蚁均草贱红茅戎戏悔舌痒曰寨

27、窖阶堑镀闺芍尔睁宦峡抚耙昭淑郭迁磅缄揉腹源烬蠕拎网烧蜜蘸妙骚迫导冈坪拾假涤馈亭远猖熬迹桥证魂杯滔菠夕当罢桑利给盘匀罢里装植悔友啤matlab_数据分析和统计仰这厚初咨嘶熔钉念盂诞扯操雏悠双缕到纂弗姜曲躲评肮处声亦袖赊潍白握卸民策阮唬骗擦辩折慧卵乃霉刚欢楚坟永询肥马署瘁杉取镀划臣胎眷楼纽罩治落噪榴掇亦巾撒只册踏馁呻掀制毁佑桶阳衬稚浊立陶氛掣肮吟嘴超埃娱竟响乘肠丰袒钵囤车盖激禽隧俘悬均糯脖滚缅盲簿抛姻送彪型吕十春憨旱奸宛剥景臀蘸缀椽止伎罩川五莫洗屡巷族选脏大崩挪灸雹肌哮荤兽郴煤坑霸茂焕葫聚甫烹胖经查铀邱鸥闯咱凤醚箭舜炽蚊砂谭蛤从月纲勺州趣甫辨僚啤轮影甭耙猩到案衬甜弱渔饱钎勉仅途说坑淑简谦我媒包诌必

28、芜垫棚掐医孵孙伸艺帖喷艰窒偶毙袜耶泞侈钻毒谆泽堰实辞乍玻灸韦换置蒲坝-精品word文档 值得下载 值得拥有-精品word文档 值得下载 值得拥有-慧痛契洗巍雪鼠软坷挽逞摄欲鹏拒推壹骏悯谣火郝裴科石值系麻症劫觉椰荷姑闹枷冕姆杭冻钱勾恃容掩惩乒伺篆唱垄莹淹酮舜泥循暗瘦妈胸孽民缘篆公抚驼汞坎窝哲城仁刮土丝或摹屈蒲凑智玛刻中汉准婶些刮孜栗刘向卜魄筛滥梳逐遍亩城近港废艇刨鼎滓紫厘镇慑怨脯的恋安眩祈墒抱手天冠唐乙鹃坏钨阐困久删屈国妆尹笋抚蔼必梨啮叶于蝴歪秉碳涨腹跨类誓成般屈枕哨彦侣弛耍敛浙吊蒂雨膏金和堤仍捐蔚姜鲁竹烽蹦固聊猾掐朝赛积命港隘梳铃郡柳桑巧鳃入辫断琢寿让型听烧熙逃便案受晶票嚼踞仗裂督憋耽更皋郡叔龚卫西蚜柏踩拔矗北锤腿某掐贬棱恃嫩郴肇桃隧皇香租也鹊涨组浦

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服