数学建模笔记 day-02

第二章 Matlab数据处理

2.1 数据组织

2.1.1 元胞数组

元胞数组是一种包含名为元胞的索引数据容器的数据类型,其中的每个元胞都可以包含任意数据类型的数据。元胞数组通常包含文本列表、文本和数字的组合或者不同大小的数值数组。通常将索引括在圆括号()中可以引用元胞集。使用花括号{}进行索引来访问元胞的内容。

>> a=cell(2,3); %定义一个两行三列的元胞数组
>> b={[1],rand(3);'sadasda',rand(1,2)}  %定义并且初始化一个两行两列的元胞数组
>> c=b{1,2}     %提取元胞数组中的具体元素
>> d=b(1,:)     %结果还是元胞数组 

!!!注:元胞数组一定要用{}来提取其中的元素

元胞数组赋值时同上,也一定得用{}。

整体赋值:

>> a=cell(2,3);
>> a(1,[2,3])={'sadsd',rand(3)}

a =

  2×3 cell 数组

    {0×0 double}    {'sadsd'   }    {3×3 double}
    {0×0 double}    {0×0 double}    {0×0 double}

例2.1 元胞数组存取示例:

clc,clear
a={'张三','李四','王五';12 15 16};
b1=[a{2,:}]         %提取其中的数值矩阵
b2=cell2mat(a(2,:)) %提取其中的数值矩阵
[r1c1,r2c1,~,~,r1c3,r2c3]=a{:}  %逐列展开并赋值给其他变量
c=[a;{'M','M','F'}] %元胞数组垂直方向串联

 ‘~’表示矩阵该位置不赋值

b1 =    12    15    16
b2 =    12    15    16
>> b4=a{2,:}
b4 =    12
>> b4={a{2,:}}
b4 =  {[12]}    {[15]}    {[16]}

注:(1) a{2,:}应该表示元胞数组的三个元素,但是b4只能代表其中一个,所以b4=12

        (2)a{2,:}应该表示元胞数组的三个元素,{a{2,:}}则又将每个元素加上了{}.

例2.2 Excel的使用

clc,clear
a=xlsread('data01.xlsx');               %调用Excel的数值矩阵
xy=[a(:,[1,2]);a([1:end-1],[4,5])]      %筛选所有的数值
clc,clear
[a,b]=xlsread('data01.xlsx','A2:F7') %列表的左上角到右下角

a =
   865   141   NaN   690   131
   941   187   NaN   254   495
   711   841   NaN   736   443
   782   726   NaN   128   789
   769   385   NaN   349   816
   453   956   NaN   NaN   NaN


b =

  6×4 cell 数组

    {'基地R'  }    {0×0 char}    {0×0 char}    {'无名高地'}
    {'基地S'  }    {0×0 char}    {0×0 char}    {'山谷1'  }
    {'基地T'  }    {0×0 char}    {0×0 char}    {'山谷11' }
    {'101高地'}    {0×0 char}    {0×0 char}    {'山谷01' }
    {'12高地' }    {0×0 char}    {0×0 char}    {'山谷001'}
    {'116高地'}    {0×0 char}    {0×0 char}    {0×0 char }

a的值为:最大维数的数值数组

b的值为:最大维数的字符数组

例2.3 选取Excel中数据画图

clc,clear
[a,b]=xlsread('data02.xlsx')
a=[a(:,[1,2]);a([1:end-1],[4,5])]  %提取需要的数据
b={b{:,1},b{[1:end-1],4}}          %提取非空字符串,构造新的字符串元胞数组
plot(a([1:3],1),a([1:3],2),'p')    %画前3个点
hold on, plot(a([4:end],1),a([4:end],2),'*')   %画其余点
text(a(:,1)+5,a(:,2),b)            %对所有的点进行标注

2.1.2 结构体数组

  结构体数组和元胞数组非常类似,因为他们都能将不同数据类型的数据组织在单一变量中。和元胞数组不同之处在于,结构体数组的数据是由称作字段的名称指定的,而不是由数字索引指定的,每一个字段都能包含任意类型和大小的数据。它使用圆点表示法而不是用花括号{}索引来访问其中的数据。

  MATLAB提供两种方法建立结构数组,用户可以直接给结构体数组字段赋值建立结构体数组,也可以利用函数struct建立结构体数组。

例2.3 利用赋值建立结构体数组

clc,clear
stu(1).name='LiMing';stu(1).number='0101';
stu(1).sex='f';stu(1).score=[90,80];
stu(2).name='LiHong';stu(2).number='0102';
stu(2).sex='m';stu(2).score=[88,80];
stu         %显示结构体数组的结构
stu(1)      %显示结构体数组第1个元素
stu(2)      %显示结构体数组第2个元素

Matlab命令

f=dir('*.m')

  可以显示当前目录下所有后缀名为m的文件信息,返回值f是一个结构数组,包括5个域:name、date、bytes、isdir、datenum;通过结构数组的元素个数就可以知道当前目录下m文件的个数,通过name域可以直到当前目录下所有m文件的名称。dir命令可以读出所有类型文件的信息。

2.2 简单文本数据的操作

  将纯文本文件是用记事本把数据保存到Matlab的当前工作路径下。以下所有的操作的数据文件必须放在Matlab的当前文件工作路径下,也就是说程序文件和数据文件要放在同一个目录下。

4种方法:

1.a=load('data.txt')    %只能适用于满行满列的数据

2.a=textread('data.txt')  %当不是满行满列时,缺少的地方自动补成0.

3.a=readmatrix('data.txt')  %当不是满行满列时,缺少的地方自动补成NaN.

4.a=importdata('data.txt')  %当不是满行满列时,缺少的地方自动补成NaN.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值