• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

MATLAB的数据类型

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

MATLAB中有15种基本数据类型,其中常用的数据类型主要是整型、浮点型、逻辑类型、结构体、元胞数组及字符串等。

整型

>> x = int8(12)

x =

  int8

   12

>> y = uint16(x)

y =

  uint16

   12

>> A = zeros(3, \'uint8\') 
% 生成全零矩阵
A =

  3×3 uint8 矩阵

   0   0   0
   0   0   0
   0   0   0
   
   
>> intmin(\'int8\')
% 确定整型数据类型的数据范围
ans =

  int8

   -128

>> intmax(\'int8\')

ans =

  int8

   127

浮点型

>> a = single(32)
% 单精度
a =

  single

    32
    
 >> b = double(10000)
%双精度
b =

       10000
 >> z = 10
% 默认为双精度
z =

    10
>> B = ones(3,\'single\')
% 三个单精度全1矩阵
B =

  3×3 single 矩阵

     1     1     1
     1     1     1
     1     1     1
     
 >> realmin(\'double\')
% 浮点型数据的取值范围查询
ans =

  2.2251e-308

>> realmax(\'double\')

ans =

  1.7977e+308

逻辑类型

% 1. if 语句的判断
>> a = 5;
>> if a > 0
     disp(\'大于0\')
   else
     disp(\'小于0\')
   end
大于0
% 2. 查找矩阵中符合一定条件的数据
>> a = magic(3)

a =

     8     1     6
     3     5     7
     4     9     2

>> a > 5

ans =

  3×3 logical 数组

   1   0   1
   0   0   1
   0   1   0
% 3. 逻辑运算

>> x = [1 2 3 -2 0 -1];
>> ~ x  
% x中元素为0 则返回"1",否则返回“0”
ans =

  1×6 logical 数组

   0   0   0   0   1   0

字符串

字符串的生成

一维字符串的生成

% 1. 一维字符串的生成
% 1.1 直接赋值发
>> str = "ABCDE"

str = 

    "ABCDE"
    
 % 1.2 连接法
>> str1 = strcat(str,"FGH")

str1 = 

    "ABCDEFGH"
    
>> str2 = [str1, "STR"]

str2 = 

  1×2 string 数组

    "ABCDEFGH"    "STR"

>> str3 = [str1,str2]

str3 = 

  1×3 string 数组

    "ABCDEFGH"    "ABCDEFGH"    "STR"

二维字符串的生成

 % 2. 二维字符串的生成    
 >>  str1 = [\'abcd\';\'efg\'] % 注意二维数组在创建时要保证每行列数相同,不然会报下面的错误
	要串联的数组的维度不一致。  
  
 >>  str1 = [\'abcd\';\'efg \']
% 空格填充
str1 =

  2×4 char 数组

    \'abcd\'
    \'efg \'
    
 >> str2 = char(\'ABC\',\'DE\')
% 通过char()创建二维字符串
str2 =

  2×3 char 数组

    \'ABC\'
    \'DE \'
    
 >> str3 = strvcat(str1,str2)
% 字符串的垂直连接
str3 =

  4×4 char 数组

    \'abcd\'
    \'efg \'
    \'ABC \'
    \'DE  \'   

字符串的操作

字符串的判断

% 1. 字符串的判断
>> str1
str1 =
  2×4 char 数组
    \'abcd\'
    \'efg \'

>> ischar(str1)
% 判断是否为字符串
ans =

  logical

   1
 >> isletter(str1)
% 判断每个字符是否为字母
ans =

  2×4 logical 数组

   1   1   1   1
   1   1   1   0	
 >> isspace(str1)
% 判断每个字符是否为空格
ans =

  2×4 logical 数组

   0   0   0   0
   0   0   0   1

字符串的访问

% 2. 字符串的访问
>>  str1 = char(\'abc\',\'d f\',\' lee3\')

str1 =

  3×5 char 数组

    \'abc  \'
    \'d f  \'
    \' lee3\'
    
>> str1(1,:)
% 访问字符串中的第1行
ans =

    \'abc  \'
    
>> str1(1,2)
% 访问第1行第2个元素
ans =

    \'b\'
    
>> str1([1,2])
% 索引访问第1,2行首个元素
ans =
    \'ad\'
    
>> str1([1,2],[2,3])
% 访问第1行2、3个元素和第2行2、3个元素
ans =
  2×2 char 数组

    \'bc\'
    \' f\'

字符串的查找与替换

%3. 字符串的查找与替换
>> str1 = \'Specify character data by placing characters inside a pair of single qutes\';
>> k = strfind(str1, \'ar\')
% 查找指定字符串,返回其位置
k =

    11    37

>> k = strfind(str1,\'are\')
% 不存在返回空列表
k =

     []

>> k = findstr(str1,\'are\')

k =

     []

>> k = findstr(str1,\'ar\')

k =

    11    37

>> strrep(str1,\'ar\',\'are\')
% 替换字符串中的字符
ans =

    \'Specify chareacter data by placing chareacters inside a pair of single qutes\'

>> i = strmatch(\'min\',strvcat(\'min\',\'minimax\',\'maximum\'))
% 字符串中匹配查找
i =

     1
     2

>> i = strmatch(\'min\',strvcat(\'min\',\'minimax\',\'maximum\'),\'exact\')
% 查找其精确位置
i =

     1

字符串的比较

% 4. 字符串的比较
>> str1 = \'ABC\';
>> str2 = \'ABC\';
>> str3 = \'abc\';
>> str4 = \'ABCD\';
>> k1 = strcmp(str1,str2)
% 比较字符串,相等返回1 
k1 =

  logical

   1

>> k2 = strcmp(str1,str3)
% 不相等返回0
k2 =

  logical

   0

>> k3 = strcmpi(str1,str3)
% 不区分大小写的比较
k3 =

  logical

   1

>> k4 = strncmp(str1,str4,3)
% 比较两个字符串的前n位是否相同
k4 =

  logical

   1

字符串的大小写转换

%5. 字符串的大小写转换
>>  str = "Hello MATLAB";
>> s  = lower(str)

s = 

    "hello matlab"

>> s = upper(str)

s = 

    "HELLO MATLAB"

字符串的执行 (eval()函数)

% 6. 字符串的执行 (eval()函数)
>> A = rand(3)

A =

    0.9649    0.9572    0.1419
    0.1576    0.4854    0.4218
    0.9706    0.8003    0.9157

>> eval(\'length(A)\') % 此处直接执行字符串

ans =

     3
     
 >> [I,J] = eval(\'size(A)\')

I =

     3


J =

     3
     
>> for i = 1:3   % 实现分别给a1,a2,a3赋值操作
     eval([\'a\',num2str(i),\'=2*i\'])
end

a1 =

     2

a2 =

     4

a3 =

     6     

元胞数组

元胞数组的创建

直接赋值法创建元胞数组

% 1. 直接赋值法创建元胞数组
%1.1 元素下标使用
>> a{1,1} = 8;
>> a{1,2} = \'cell study\';
>> a{2,1} = magic(3);
>> a{2,2} = magic(3)> 5;
>> a

a =

  2×2 cell 数组

    {[       8]}    {\'cell study\'}
    {3×3 double}    {3×3 logical }
    
>> b{1,1} = {8};
>> b{1,2} = {\'cell study\'};
>> b{2,1} = {magic(3)};
>> b{2,2} = {magic(3) > 5};
>> b

b =

  2×2 cell 数组

    {1×1 cell}    {1×1 cell}
    {1×1 cell}    {1×1 cell}    

cell()函数创建元胞数组

 % 2. cell()函数创建元胞数组   
 >> a = cell(2)
 
a =

  2×2 cell 数组

    {0×0 double}    {0×0 double}
    {0×0 double}    {0×0 double}

>> a = {1,\'c\',2,cell(3)}   

元胞数组的操作

访问元胞数组

% 1. 访问元胞数组
>> a = {8, \'cell study\';magic(3), magic(3) > 5}

a =

  2×2 cell 数组

    {[       8]}    {\'cell study\'}
    {3×3 double}    {3×3 logical }

>> a{1,1}

ans =

     8

>> a{1,:}

ans =

     8


ans =

    \'cell study\'

>> a{:,2}

ans =

    \'cell study\'


ans =

  3×3 logical 数组

   1   0   1
   0   0   1
   0   1   0

>> a{2,2}(1,1)

ans =

  logical

   1
 >>  a{2,2}(1,1) + 1

ans =

     2  
     
 >> a(1,1)

ans =

  1×1 cell 数组

    {[8]}

>> a(1,1) + 1  %小括号访问不能修改值
未定义与 \'cell\' 类型的输入参数相对应的运算符 \'+\'。

元胞数组的显示

% 2. 元胞数组的显示
>> celldisp(a)
 
a{1,1} =
 
     8

 
 
a{2,1} =
 
     8     1     6
     3     5     7
     4     9     2

 
 
a{1,2} =
 
cell study
 
 
a{2,2} =
 
   1   0   1
   0   0   1
   0   1   0
   
 >> celldisp(a,\'s\') % 以s为元胞数组命名
 
s{1,1} =
 
     8

 
 
s{2,1} =
 
     8     1     6
     3     5     7
     4     9     2

 
 
s{1,2} =
 
cell study
 
 
s{2,2} =
 
   1   0   1
   0   0   1
   0   1   0
>> cellplot(a) % 以图形化的方式显示元胞数组


删除元胞数组的内容

% 3.删除元胞数组的内容
>> a{1,1} = []

a =

  2×2 cell 数组

    {0×0 double}    {\'cell study\'}
    {3×3 double}    {3×3 logical }

>> a{1,1}

ans =

     []

结构体

结构体的生成

直接赋值法

%1. 直接赋值法
>> ss.name = \'matlba\';
>> ss.age = 2019;
>> ss.num = [5:2:16];
>> ss

ss = 

  包含以下字段的 struct:

    name: \'matlba\'
     age: 2019
     num: [5 7 9 11 13 15]

函数法

% 2. 函数法 
>> ss1 = struct(\'name\',\'matlab\',\'age\',2019,\'num\',[5:2:16])
% struct()函数创建结构体
ss1 = 

  包含以下字段的 struct:

    name: \'matlab\'
     age: 2019
     num: [5 7 9 11 13 15]

结构体的操作

访问结构体中的元素

% 1. 访问结构体中的元素
>> stu = struct(\'sname\',{\'xiaoming\',\'xiaoli\',\'xiaochen\'},\'sage\',{20,21,22})

stu = 

  包含以下字段的 1×3 struct 数组:

    sname
    sage

>> stu(:,1)

ans = 

  包含以下字段的 struct:

    sname: \'xiaoming\'
     sage: 20

>> stu(1)

ans = 

  包含以下字段的 struct:

    sname: \'xiaoming\'
     sage: 20

>> stu.sname

ans =

    \'xiaoming\'


ans =

    \'xiaoli\'


ans =

    \'xiaochen\'

>> stu(1).sname

ans =

    \'xiaoming\'

结构体的显示

% 2. 结构体的显示
 >> names = fieldnames(stu)
% 显示结构体的域名
names =

  2×1 cell 数组

    {\'sname\'}
    {\'sage\' }

>> f = getfield(stu,\'sname\')
% 显示域名中的内容
f =

    \'xiaoming\'

结构体的删除

% 3. 结构体的删除
 >> s = rmfield(stu,\'sage\')

s = 

  包含以下字段的 1×3 struct 数组:

    sname

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap