罗兰在MATLAB的艺术

把想法变成MATLAB

使用MATLAB年级

教育者使用MATLAB。除了使用MATLAB的研究,许多教授和讲师使用MATLAB进行教学,包括展示和解释概念,创建课堂笔记和创建和收集作业和考试。今天,我将展示如何使用一个数据集数组统计工具箱年级一组学生的结果已经记录。

内容

数组的数据集是什么?

一个数据集基本上是二维数组,每个数组列数据代表一个数据类型,但可能由许多不同数据类型的列在一起。

单元阵列可以做到这一点,但不执行的所有元素在一个给定的列必须具有相同的类型。名字与单元阵列,你要么需要携带额外的数组,或有特殊的行或列包含标签。

一个标量结构同样可以执行这个服务,但但不执行,每个字段必须持有相同数量的行。此外,一个数据集数组可以标签允许您参考数据不仅仅是数字或逻辑索引,但名字。

为什么使用一个数据数组?

您可能想要使用一个数据集数组如果数据是自然的不同但相关的实体的集合。集合之间的关系更限制(在本例中,1:1)细胞或结构的灵活性。我在这里展示的例子中,分级赋值,给出了一些简单的方法你可能使用一个数据集数组中。

创建一个数据集

我有一个作业5个问题,2 T / F和3多项选择(d)。的问题已经非常富有想象力的名字。

qname = {第一季度的“第二季”“第三季”第四季度的“Q5”};

我收集了学生的结果在一张电子表格标记为“学生”,真相在一张贴上“真相”。我可以读这些直接进入数据集数组结果可用于分析。

答案=数据集(“xlsfile”,“阶级answers.xls”,“表”,“学生”,“ReadObsNames”,真的,“ReadVarNames”假的,“VarNames”qname)
答案= Q1第三季度第四季度Q5克里斯' a ' 0 ' c ' ' b '拉' b ' 0 ' c ' ' a '克里斯托弗1 ' a ' 0 ' c ' ' a '克丽丝1 ' a ' 1 ' b ' ' c '克里斯汀1 ' a ' 0 ' d ' ' a '

正如您可以看到的,所有我的学生也有类似的名字。事实上,我认为最常见的根名称为员工在MathWorks同样的根。每一行代表结果对于一个给定的学生,和列代表结果对于一个给定的问题。

这是“真正的”答案。

真理=数据集(“xlsfile”,“阶级answers.xls”,“表”,“真相”,“ReadObsNames”,真的,“ReadVarNames”假的,“VarNames”qname)
真理= Q1第三季度第四季度Q5答案1 ' a ' 0 ' c ' ' a '

合并成一个单一的数据集

我把我的答案在第一行数组我真相以后比较方便。

alldata =[真理;答案)
alldata = Q1第三季度第四季度Q5答案1 ' a ' 0 ' c ' ' a '克里斯' a ' 0 ' c ' ' b '拉' b ' 0 ' c ' ' a '克里斯托弗1 ' a ' 0 ' c ' ' a '克丽丝1 ' a ' 1 ' b ' ' c '克里斯汀1 ' a ' 0 ' d ' ' a '

改变底层数据

正如你所看到的,答案显示为字符串值,1 s, 0。事实上,我更愿意认为1和0的真假。同时,字符串值结果从多项选择题,答案是有限值一个通过d。我更希望看到结果反映在我想思考的方式。所以我现在转换数据,列的列。

q = qname%得到所有问题的值。vals = alldata。(问{1});变化百分比数值逻辑。如果isnumeric (val) alldata。(问{1})=逻辑(val);其他的变化百分比非数字值集合' a ': ' d 'alldata。(问{1})=名义(val, [], {“一个”,“b”,“c”,' d '});结束结束

这里有一个转换后的数据的总结。

总结(alldata)
Q1: x1逻辑[6]真假4 2 Q2: x1名义[6]b c d 5 1 0 0 Q3: x1逻辑[6]真的假1 5第四季度:x1名义[6]b c d 0 1 4 1 Q5: x1名义[6]b c d 4 1 1 0

列,它显示了我的大小和类型的数据,在这种情况下,有多少结果的计算每一个可能值。

您可能已经注意到,我把选择题列类型名义上的。的想法名义上的数组是限制数组中的值到一个特定的值的集合。如果所有的可接受的值的数组表示数据,你通常不需要超过第一个输入。因为我的一些列没有包括所有可能值:d,我提供的这些水平。因为它们是字符串,我选择使用他们的标签数据的值。

收集信息/问题

我现在准备收集信息通过问题或学生。首先让我们看看答案为1和4的问题。这是另一个数据集数组中。

q14Truth = alldata (“答案”,{第一季度的第四季度的})
q14Truth = Q1 Q4回答真正的c

得到一个答案,我有另一个选择。这返回一个名义上的价值。

q4ans = alldata.Q4 (“答案”)
q4ans = c

我能得到所有学生的回答一个特定问题。我得到一个名义上的由于向量返回这里第四季度列包含一个多项选择问题的答案。

q4all = alldata.Q4(2:结束)
q4all b = c c c d
第四季度*
类属性名称大小字节q4all 5 x1 314名义q4ans 1 x1 306名义

我也可以找到一个学生的所有答案,导致另一个数据集数组中。

ChrisAnswers = alldata (“克里斯”:)
ChrisAnswers = Q1第三季度第四季度Q5克里斯假假c b

这问题很难吗?

假设我想找出这对这组学生问题是困难的。我可以使用datasetfun功能,类似于cellfunarrayfun,将一个函数应用到每个变量的数据。首先,我需要找到那些问题学生有对与错所以我可以比较他们的答案真相(第1行)。

f = @ (x) 100 *总和(x (1) = = x(2:结束))/(大小(alldata, 1) 1) percentRight = datasetfun (f, alldata)
f = @ (x) 100 *总和(x (1) = = x(2:结束))/(大小(alldata, 1) 1) percentRight = 60 60 60 80 80

每个学生的作业

使用datasetfun通过比较对学生(即列中的所有元素。2:结束),第一个元素的列,正确的答案。我努力标签行与这里的学生的名字。

f = @ (x) x (1) = = x(2:结束)rightWrong = datasetfun (f alldata“DatasetOutput”,真的,“ObsNames”alldata.Properties.ObsNames (2)):
f = @ (x) x (1) = = x(2:结束)rightWrong = Q1第三季度第四季度Q5克里斯Christine假假假真的真的真的假Christopher真的真的真的真的真的真的真的真的克里斯真的真的假假假克里斯汀真的真的真的假的真的

接下来我和行获得每个学生的成绩和分数作为最后一列添加到数据集。记住:第一个分数是答案,所以我设置的分数100。

alldata。级= [100;100 *(双(rightWrong), 2)之和/尺寸(alldata, 2))
alldata = Q1第三季度第四季度Q5年级答案真的假c 100年克里斯假假c b Christine假b假60 c 60克里斯托弗真的假c 100年克里斯真的真正的b c 40克里斯汀真一假d 80

请注意,alldata现在包含一个新列数值除了名义上的逻辑的人。

你怎么能看到用一系列数据集吗?

你能看到的应用程序中,您可以利用一个与你的数据作为一个工作吗数据集数组?请让我知道在这里




使用MATLAB®7.6发表

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。