实验三元胞和结构定义

上传人:人*** 文档编号:570659901 上传时间:2024-08-05 格式:PDF 页数:5 大小:137.41KB
返回 下载 相关 举报
实验三元胞和结构定义_第1页
第1页 / 共5页
实验三元胞和结构定义_第2页
第2页 / 共5页
实验三元胞和结构定义_第3页
第3页 / 共5页
实验三元胞和结构定义_第4页
第4页 / 共5页
实验三元胞和结构定义_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《实验三元胞和结构定义》由会员分享,可在线阅读,更多相关《实验三元胞和结构定义(5页珍藏版)》请在金锄头文库上搜索。

1、实验二元胞和结构定义实验二元胞和结构定义一.实验目的1 较熟练地掌握矩阵元素的访问2 进一步掌握矩阵中的关系运算的特点及索引地使用,分辨出元胞数组与结构数组之区别,灵活地控制调用结构体数组里元素。二.实验类型设计型三.实验内容:1 自行产生一个 5 行 5 列的数组,用两种方法得到最中间的三行三行矩阵。2 根据 a=reshape(-4:4,3,3)做一个矩阵,然后(1)取出所有大于 0 的元素构成一个向量(可推广到从一个矩阵里筛选出符合条件的元素组成一个向量)(2)将原矩阵中大于 0 的元素正常显示,而小于等于 0 的元素全部用 0 来表示(可推广到将原矩阵中不符合条件的全用 0 来表示,符

2、合条件的值不变)。3 建立如下一个元胞数组,现在要求计算第一个元胞第 4 行第 2 列加上第二个元胞+第三个元胞里的第二个元素+最后一个元胞的第二个元素。a=pascal(4),hello;17.3500,7:2:1004 建立一个结构体的数组,包括 3 个人,字段有姓名,年龄,分数,其中分数由随机函数产生一个 3 行 10 列的数据表示了有 10 门课程,每门课程有三个阶段的分数。问题是:问题 1,如何找到第 2 个人的分数并显示出来问题 2,如何找到第 2 个人的每门课程 3 个阶段的平均分数并显示出来问题 3,全班同学的 10 门课程的每门课程的平均分如何计算出来?要求放到一个数组里。问

3、题 4,找到这个班所有同学的姓名放到一个元胞数组里5 给定一个图像文件,格式是 jpg,通过 inportdata 引入这个文件,查看引入后数据保存是一个数组,是 100*100*3 的一个数组,这是一个三维的数组,表明有100*100 个点,每个点有 RGB 三个方面决定的。现在,要求将这些点的中间部分 30个象素宽度的正方型用黑点表示。7 将一个矩阵转化成结构体:有三个一维向量分别表示若干个点(5 个点)的RGB 值,如 R=255*rand(1,5),G =255*rand(1,5),B=255*rand(1,5)。将这三个一维向量组成一个 5*3 矩阵(5 表示 5 个点,3 表示每个

4、点有三个色值)。然后将这个表示若干点色值的矩阵转化成元胞数组,最后将元胞数组转成包含 R,G,B 三个属性的结构体。四.实验步骤:1.仔细阅读 Matlab 帮助文件中有关以上函数的使用说明,能充分理解其使用方法并能运用它们完成实验内容。2.先建立一个 5*5 的矩阵,然后可以通过使用索引访问矩阵元素的多种方法中的访问由指定的向量 I,和向量 J 来指定。本题还可以通过空数组的方式来得到,空数组产生的主要目的就是为了删除空间,我们可以先将这个 5*5 矩阵的第 1, 5 行设置为空,再将第 1,5 列设置为空即可。3 首先建立一个矩阵,然后用关系运算符找出大于 0 的索引矩阵,根据这个索引就可

5、以得到满足条件的矩阵了,第二个问题,是需要使用两个数组的点积运算。4.元组数组的设置可以由多种方式,但总体来说,还是一个数组(矩阵,可看作是广义矩阵),元组数组里的元素我们称为元胞,要想访问元胞里的元素,我们必须使用,而不是(),元素里的部分内容的访问需要用到()。因此,本题先建立元胞数组,再访问元胞元素里的分量,加起来即可。5.结构体数组的建立方法有两种,第一种是通过 struct 关键字来引导的建立方法,这种方法相当于初始化赋值数据,数据必须被包着,很象元胞元素;第二种是直接给某一个结构体赋值,实际上是给它的某个属性赋值,赋值的数据就是一般的数据格式。本题首先建立结构体数组,结构体里有三个

6、字段,可以先建立 student(1)的各个字段,然后再建立 student(2),依次类推。另外,在建立分数字段的时候用到了rand 函数,用这个函数建立 3 行 10 列的矩阵,表示 10 门课程,每门课程有三次成绩。问题 1 要得到某个人的成绩,需要用()的方式访问数组里某个人,然后再用“.”来操作其成员数据。问题 2 求每个人的平均分,需要用到 mean 函数。问题 3 要得到全班所有人(实际给出 3 个人),每个人 10 门平均分,有两种方法:方法一,可以借助问题 2 的方法先求出第 1 个人的平均分,再求第 2 人的平均分,再求第 3 个人的平均分,然后用a1;a2;a3将平均分组

7、合起来变成一个平均分矩阵,最后再求一次平均分即得到结果。方法二,就应该预先建立一个 3*10 的矩阵 meanss,这个矩阵预先都放 0,注意矩阵的赋值方式:meanss(3,10)=0。然后,用循环的方式将求出来的第 i 个人的平均分交给矩阵 meanss 相应的第 i 行。问题 4,要将姓名放在一个矩阵里,有两种方法。第一种方法可以使用 strvcat 这个函数来将不同长度的字符串接合在一起,如names=strvcat(names,student(1).name)就接合了第一个人的姓名,用这种方法可以接合多个字符串,如果编程解决的话,只要使用循环即可完成任务。第二种方法,保存不同长度字符

8、串使用元胞数组是非常方便的,因为不同的元胞元素结构、长度等一切皆可不同。首先定义一个空元胞,例如 names=cell(1),然后从结构体里取出姓名依次放入元胞元素中去即可,格式如 names1=第 1 个学生的姓名。若是编程来解决这个问题,思路也是一样的,只不过,需要使用循环。6.在所有的数据类型中,只有元胞数组和结构体类型最相似,因为它们都可以表示不相干的数据,因此基于这点,系统提供了元胞数组和结构体相互转化的函数。本题要求将一个一般的矩阵转成结构体,思路是:一般矩阵元胞数组结构体。而元胞转结构体要满足一定的格式要求,这个格式如下:字段名 1(如 R) 字段名 2(如 G) 字段名 3(如 B)233 123 45243 88 185根据给定的题目条件,有 3 个 RGB 的向量,R=255*rand(1,5)G =255*rand(1,5)B=255*rand(1,5)这三个向量是行向量。我们首先要把这 3 个向量整合成上表的模样一般矩阵,以便于转化得到的元胞满足向结构体转化的条件。一般矩阵元胞数组转化需要使用函数 num2cell元胞数组结构体转化需要 cell2struct,使用这个函数,必须先定义一个字段名元胞 fields=red,green,blue,这个元胞 fields 作为 cell2struct 函数的参数引入,以便于能够分清楚,各列数据属于哪个字段。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号