您的位置:首页 > 其它

结构体变量、单元型变量和结构体数组的使用方法

2017-03-02 22:50 507 查看
%{ 

《结构体变量、单元型变量和结构体数组的使用方法》

问题描述:(MatlabR2015a代码,可直接复制)

某专业有三名研究生,本学期选修了四门课程,若这些研究生的姓名,学号,性别,出生年月,课程名称,考试成绩可任意假定,

       (1)分别用结构型变量和单元型变量表示以上信息;

       (2)举例说明查阅以上任何一条信息的方法;

       (3)求每一个研究生的平均成绩.

%}

%%法一:单元型变量表示,用结构体,因为结构体可以使得不同的数据类型的数据放在一个矩阵中;

%错误:第一行是姓名,学号,性别,出生年月 第二行是具体回答  第三行是课程名字 第四行是相应课程的分数(当然也可以列的方式进行)

Student1=struct('Name',{'韩承熙'},'ID',{'0107140112'},'Gender',{'男'},'Birthday',{'1995-03-22'},...

                'InSAR',70,'Matlab',50,'Microwave',80,'GIS',90);

            %%%结构体必须用(),不能用[]!!!!! 好像不可以用;隔开做成2行???

Student2=struct('Name',{'韩熙熙'},'ID',{'0107140111'},'Gender',{'男'},'Birthday',{'1995-03-21'},...

                'InSAR',50,'Matlab',80,'Microwave',90,'GIS',70);

Student3=struct('Name',{'韩熙枭雄'},'ID',{'0107140113'},'Gender',{'男'},'Birthday',{'1995-03-23'},...

                'InSAR',80,'Matlab',90,'Microwave',70,'GIS',50);

Student=[Student1 Student2 Student3]

%**************调用方式********************%

Student     %查看学生有哪些信息

Student(1)  %查看学生1的所有信息

Student(1).Name    %查看学生1的姓名

Student(1).Matlab    %查看学生1的Matlab课程的成绩信息

%**************调用方式********************%

%%%求成绩的平均值

MeanCouSco1=sum(Student(1).InSAR+Student(1).Matlab+Student(1).Microwave+Student(1).GIS )/4

MeanCouSco2=sum(Student(2).InSAR+Student(2).Matlab+Student(2).Microwave+Student(2).GIS )/4

MeanCouSco3=sum(Student(3).InSAR+Student(3).Matlab+Student(3).Microwave+Student(3).GIS )/4

%###############思维拓展,可以把单独把课程和成绩用结构型变量做成一快,然后再放进上述结构体中##########

%%%法二:使用结构型变量表示%%%

Student1.Name='韩承熙';

Student1.ID='0107140112';

Student1.Gender='男';

Student1.Birthday='1995-03-22';

% Student1.Course=['InSAR ','Matlab ','Microwave ','GIS'];

%此处将所有课程看作一个大的连续的字符串!!!Student(1).Course(1)是I  Student(1).Course(6)是空!!!###

Student1.Course=[{'InSAR'},{'Matlab'},{'Microwave'},{'GIS'}];

%此处每个科目用大括号单独括起来,即看作cell元胞数组型的,每一个可以单独表示Student(1).Course(1)是'InSAR '###

%实现的结果与下面用结构数组的形式一样,都可以把'InSAR'看作一个单独的量!!!!!!

Student1.Score=[70,50,80,90];

% Student1={Name,ID,Gender,Birthday,Course,Score};%结构型变量自动将他们合在一起,不用重新合一起##

Student2.Name='韩熙熙';

Student2.ID='0107140111';

Student2.Gender='男';

Student2.Birthday='1995-03-21';

Student2.Course=[{'InSAR'},{'Matlab'},{'Microwave'},{'GIS'}];

Student2.Score=[50,80,90,70];

% Student2={Name,ID,Gender,Birthday,Course,Score};

Student3.Name='韩熙枭雄';

Student3.ID='0107140114';   

Student3.Gender='男';

Student3.Birthday='1995-03-23';

Student3.Course=[{'InSAR'},{'Matlab'},{'Microwave'},{'GIS'}];

Student3.Score=[80,90,70,50];

% Student3={Name,ID,Gender,Birthday,Course,Score};

Student=[Student1 Student2 Student3]

%**************调用方式********************%

Student     %查看所有学生信息

Student(1)  %查看学生1的信息

Student(1).Course       %查看学生1的课程(注意 单独的 和 字符串 的区别!)

Student(1).Course(2)    %查看学生1的第二门课程是Matlab

Student(1).Score    %查看学生1的所有课程的成绩信息

Student(1).Score(2)    %查看学生1的Matlab课程的成绩信息

%**************调用方式********************%

%%%求成绩的平均值

MeanCouSco1=mean(Student(1).Score)

MeanCouSco2=mean(Student(2).Score)

MeanCouSco3=mean(Student(3).Score)

%%%法二

MeanCouSco1=sum(Student(1).Score(1)+Student(1).Score(2)+Student(1).Score(3)+Student(1).Score(4))/4

MeanCouSco2=sum(Student(2).Score(1)+Student(2).Score(2)+Student(2).Score(3)+Student(2).Score(4))/4

MeanCouSco3=sum(Student(3).Score(1)+Student(3).Score(2)+Student(3).Score(3)+Student(3).Score(4))/4

% %%%法三:struct array用结构数组的方法%%%

% Student1.Name='韩承熙';

% Student1.ID='0107140112';

% Student1.Gender='男';

% Student1.Birthday='1995-03-22';

% Student1.CouSco=struct('InSAR',70,'Matlab',50,'Microwave',80,'GIS',90); 

 %%注意:第1,3,5为项,2,4,6为值,值为非数字时赋值要用{}!!!!!!

% % CouSco=struct('InSAR',70,'Matlab',50,'Microwave',80,'GIS',90);  

% % Student11=[Student1 CouSco];



% Student2.Name='韩熙熙';

% Student2.ID='0107140111';

% Student2.Gender='男';

% Student2.Birthday='1995-03-21';

% Student2.CouSco=struct('InSAR',50,'Matlab',80,'Microwave',90,'GIS',70);

% % CouSco=struct('InSAR',50,'Matlab',80,'Microwave',90,'GIS',70);             问题:%结构数组和结构型变量可以放在一个矩阵里么?

% % Student22=[Student2 CouSco];



% Student3.Name='韩熙枭雄';

% Student3.ID='0107140114';   

% Student3.Gender='男';

% Student3.Birthday='1995-03-23';

% Student3.CouSco=struct('InSAR',80,'Matlab',90,'Microwave',70,'GIS',50);

% % CouSco=struct('InSAR',80,'Matlab',90,'Microwave',70,'GIS',50);

% % Student33=[Student3 CouSco];

% % Student=[Student11 Student22 Student33];

%  Student=[Student1 Student2 Student3];

%  

% %**************调用方式********************%

% Student     %查看所有学生信息

% Student(1)  %查看学生1的信息

% Student(1).CouSco            %查看学生1的课程和成绩信息

% Student(1).CouSco.InSAR      %查看学生1的InSAR课程的成绩信息

% %**************调用方式********************%

% %%%求成绩的平均值

% MeanCouSco1=sum( Student(1).CouSco.InSAR+Student(1).CouSco.Matlab+Student(1).CouSco.Microwave+Student(1).CouSco.GIS)/4;

% MeanCouSco2=sum( Student(2).CouSco.InSAR+Student(2).CouSco.Matlab+Student(2).CouSco.Microwave+Student(2).CouSco.GIS)/4;

% MeanCouSco3=sum( Student(3).CouSco.InSAR+Student(3).CouSco.Matlab+Student(3).CouSco.Microwave+Student(3).CouSco.GIS)/4;

%%韩熙枭雄 2017.3.2于长沙 

%%如有疑问可以发邮件给我1121399040@qq.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息