数据分析1一个月31天三城市气温
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
matlab数据分析
由于MATLAB面向矩阵,所以它很容易对数据集合进行统计分析。按规定,数据集存储在面向列的矩阵里。也就是,一个矩阵的每一列代表不同的被测变量,每一行代表各个样本或观察值。例如,让我们假定,一个月31天的三城市每日高温(单位为0C)被记录,并赋给脚本M文件中的变量temps,在精通MATLAB工具箱里取名为mmtemp.m。运行M文件,把变量temps放在MATLAB工作空间里。这样,变量temps包含:
» temps
temps =
12818
15922
12519
14823
12622
119 19
15915
81020
12718 141019 11817 9723 8819 15818 8920 10717 12722 9819 12821 12820 10917 131218
10622
14721
12522
13718
151023
131124
121222
每一行包含了给定一天的高温;每一列包含不同城市的高温。为了使数据可视,把它绘图:
» d=1:31;%number the days of the month
» plot(d, tem ps)
» xlabel(' Day of Month '),ylabel(' Celsius ')
» title(' Daily High Temperatures in Three Cities ')
(见图9.1)
图9.1三个城市的每日高温
上面的plot命令也说明了plot命令用法的另一种形式。变量d是一个长度为31的向量,而temps是一个31×3矩阵。给定这些数据,plot命令绘出了temps 对每一列d的曲线。绘图在第7和8章进一步讨论。
为了说明MATLAB数据分析的一些功能,根据上面温度数据考虑以下命令。
» avg_temp=mean(temps)
avg_temp =
11.96778.225819.8710
表明第三个城市有最高平均温度。这里MATLAB分别地找出了各列的平均值。» avg_avg=mean(avg_temp)
avg_avg =
13.3548
找出了三个城市的总平均温度。当输入到数据分析函数是行或列向量时,MATLAB 仅对向量执行运算,返回一个标量。
考虑从各城市的均值求每日偏差的问题。即必须从temps的i列中减去
avg_temp(i)。我们不能仅仅用以下的语句
» temps-avg_temp
??? Error using ==> -
Matrix dimensions must agree.
因为这个操作不是一个已定义的数组操作(temps是31×3和avg_temp是1×3)。或许最直接的方法是使用For循环。
for i=1:3
tdev( : , i)=temps( : , i)-avg_temp(i) ;
end
» tdev
tdev =
0.0323-0.2258-1.8710 3.03230.77422.1290 0.0323-3.2258-0.8710 2.0323-0.22583.1290 0.0323-2.22582.1290 -0.96770.7742-0.8710 3.03230.7742-4.8710 -3.96771.77420.1290 7.0323-1.2258-1.8710 0.0323-1.2258-1.8710 2.03231.7742-0.8710 -0.9677-0.2258-2.8710 -2.9677-1.22583.1290 -3.9677-0.2258-0.8710 3.0323-0.2258-1.8710
-1.9677-1.2258-2.8710 0.0323-1.22582.1290 -2.9677-0.2258-0.8710 0.0323-0.22581.1290 0.0323-0.22580.1290 -1.96770.7742-2.8710 1.03233.7742-1.8710 -2.96771.77420.1290 -1.9677-2.22582.1290 2.0323-1.22581.1290
0.0323-3.22582.1290
1.0323-1.2258-1.8710 3.03231.77423.1290 1.0323
2.77424.1290
虽然使用上面的方法有效,但比使用MATLAB的数组操作功能要慢。复制avg_temp,使得它与temps有同样的大小,然后再做减法,这样就快得多。» tdev=temps-avg_temp(ones(31,1),:)
tdev =
0.0323-0.2258-1.8710
3.03230.77422.1290
0.0323-3.2258-0.8710
2.0323-0.2258
3.1290
0.0323-2.22582.1290
-0.96770.7742-0.8710
3.03230.7742-
4.8710
-3.96771.77420.1290
7.0323-1.2258-1.8710
0.0323-1.2258-1.8710
2.03231.7742-0.8710
-2.9677-1.22583.1290 -3.9677-0.2258-0.8710 3.0323-0.2258-1.8710 -3.96770.77420.1290 -1.9677-1.2258-2.8710 0.0323-1.22582.1290 -2.9677-0.2258-0.8710 0.0323-0.22581.1290 0.0323-0.22580.1290 -1.96770.7742-2.8710 1.03233.7742-1.8710 -2.96771.77420.1290 -1.9677-2.22582.1290 2.0323-1.22581.1290