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

来源:互联网 发布:算法统宗中的所有题目 编辑:程序博客网 时间:2024/06/05 11:16

%{ 

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

问题描述:(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

1 0
原创粉丝点击