matlab使用初步

本文详细介绍了Matlab中的通用命令,如cd、dir、clf等,以及各类数据类型的操作,包括整数、浮点数、复数、逻辑、字符串、结构体、单元数组和函数句柄。涵盖了矩阵操作、数据获取、转换和处理,以及字符串处理和文件I/O的基本知识。

通用命令

  1. 通用命令

    命令说明
    cd显示或改变当前工作目录
    dir显示当前目录或指定目录下的文件
    clc清除工作窗中的所有显示内容
    home将光标移至命令窗口的最左上角
    clf清除图形窗口
    type显示文件内容
    clear清理内存变量
    echo工作窗信息显示开关
    disp显示变量或文字内容
    load加载指定文件的变量
    diary日志文件命令
    !调用dos命令
    exit/quit退出matlab
    pack收集内存碎片
    hold图形保持开关
    path显示搜索目录
    save保存内存变量到指定文件
  2. 输入内容的编辑

    键盘按键说明
    调用上一行
    光标左移一个字符
    光标右移一个字符
    Ctrl+←光标左移一个单词
    Ctrl+→光标右移一个单词
    Alt+Backspace恢复上一次删除
    Home光标置于当前行开头
    End光标置于当前行末尾
    Esc清除当前输入行
    Del删除光标处的字符
    Backspace删除光标前的字符
  3. 标点

标点说明
:冒号,具有多种应用功能
;分号,区分行及取消运行结果显示
,逗号,区分列及函数参数分隔符
()括号,指定运算的优先级
[]方括号,定义矩阵
{}大括号,构造单元数组
%百分号,注释标记
!惊叹号,调用操作系统运算
=等号,赋值标记
单引号,字符串的标识符
.小数点及对象域访问
续行符号

常用数据类型

matlab数据类型的最大特点是每一种类型都以数组为基础,matlab事实上把每种类型的数据都作为数组来处理,这些类型都以矩阵或者数组形式存在。

  1. 数值类型

    1. 整数类型

      1. 整数数据类型

        数据类型取值范围转换函数所占字节数
        有符号8位整数-27~27-1int81
        有符号16位整数-215~215-1int162
        有符号32位整数-231~231-1int324
        有符号64位整数-263~263-1int648
        无符号8位整数0~28-1uint81
        无符号16位整数0~216-1uint162
        无符号32位整数0~232-1uint324
        无符号64位整数0~264-1uint648
      2. 取整函数

        函数运算法则
        floor(x)向下取整
        ceil(x)向上取整
        round(x)取最接近的整数,如果小数部分是0.5,则向绝对值大的方向取整
        fix(x)向0取整
    2. 浮点数类型

      数据类型单精度双精度
      所占字节数48
      各位的用途0~22位表示小数部分,23~30位表示指数部分,31位表示0正1负0~51位表示小数部分,52~62位表示指数部分,63位表示0正1负
      转换函数singledouble
    3. 复数类型

      • 创建复数
        1. 采用直接按照复数形式输入的方式创建复数:
      >>x=3+4i
      x=
      	3.0000+4.0000i
      

      ​ 2. 采用complex函数创建复数:

      >>x=5;
      >>y=6;
      >>z=complex(x,y)
      z=
      	5.0000+6.0000i
      
      • matlab中关于复数的相关函数:
      函数说明
      real(z)返回z的实部
      imag(z)返回z的虚部
      abs(z)返回z的模
      angle(z)返回z的辐角
      conj(z)返回z的共轭复数
      complex(a,b)以a为实部、b为虚部创建复数
    4. inf和NaN

      matlab中使用inf和-inf分别代表正无穷量和负无穷量,NaN表示既不是实数也不是虚数的非数值的值,类似0/0、inf/inf这样的表达式得到的结果均为NaN。

  2. 逻辑类型

    用函数logical()可以把任何非零的数值转换为逻辑真(即1),把数值零转换为逻辑假(即0)。

  3. 字符串

    • matlab中规定用数据类型char来表示一个字符,一个char类型的1Xn数组,则可以称为字符串string。

    • 字符数组中的每一个元素代表一个字符,在matlab中,字符串和字符数组(矩阵)基本上是等价的。

    • 可以用一对单引号来表示字符串

      >>x='Your Name'
      x=
      	'Your Name'
      
    • 也可以用char函数来构造一个字符串

      >>y=char('Your Name')
      y=
      	'Your Name'
      
    • 字符串的连接:

      • 直接将字符串水平或垂直连接

      • >>x=['hello','kitty']
        x=
        	'hellokitty'
        >>x=['hello';'kitty']
        x=
        	2x5 char数组
        		'hello'
        		'kitty'
        
      • 采用命令strcat或strvcat实现字符串的水平或垂直连接

      • >>strcat('hello','kitty')
        ans=
        	'hellokitty'
        >>strvcty('hello','kitty')
        ans=
        	2x5 char数组
        		'hello'
        		'kitty'
        
    • 与字符串相关的其他命令

      函数功能
      strcmp比较字符串
      strcmpi忽略大小写比较字符串
      strncmp比较字符串的前n个字符
      findstr在一个字符串中查找另一个字符串
      strjust对齐字符数组,包括左对齐、右对齐和居中
      strmatch查找匹配的字符串
      strrep替换字符串
      upper转换为大写
      lower转换为小写
      strtok返回字符串中第一个分隔符(空格、回车和“Tab”键)前的部分
      blanks产生空字符串
      deblank删除字符串中的空格
  4. 结构体类型

    • 通过赋值语句创建结构体

      >> student.Name='Kate'
      
      student = 
      
        包含以下字段的 struct:
      
          Name: 'Kate'
      
      >> student.Grade=6
      
      student = 
      
        包含以下字段的 struct:
      
           Name: 'Kate'
          Grade: 6
      
      >> student.Subject={'math','english'}
      
      student = 
      
        包含以下字段的 struct:
      
             Name: 'Kate'
            Grade: 6
          Subject: {'math'  'english'}
      
      >> student.Result={85,90}
      
      student = 
      
        包含以下字段的 struct:
      
             Name: 'Kate'
            Grade: 6
          Subject: {'math'  'english'}
           Result: {[85]  [90]}
      
    • 使用结构体创建函数struct()创建结构体

      >> student=struct('Name','kate','Grade',6,'Subject',{'math','english'},'Result',{85,90})
      
      student = 
      
        包含以下字段的 1×2 struct 数组:
      
          Name
          Grade
          Subject
          Result
      
      >> student(1)
      
      ans = 
      
        包含以下字段的 struct:
      
             Name: 'kate'
            Grade: 6
          Subject: 'math'
           Result: 85
      
      >> student(2)
      
      ans = 
      
        包含以下字段的 struct:
      
             Name: 'kate'
            Grade: 6
          Subject: 'english'
           Result: 90
      
  5. 单元数组类型

    • 利用赋值语句直接创建单元数组

      >> student={'Kate',6,{'math','english'},[85,90]}
      
      student =
      
        1×4 cell 数组
      
          {'Kate'}    {[6]}    {1×2 cell}    {[85 90]}
      
      >> student={'Kate',6,{'math','english'},[85,90];'tom',5,{'math','english'},[80,96]}
      
      student =
      
        2×4 cell 数组
      
          {'Kate'}    {[6]}    {1×2 cell}    {[85 90]}
          {'tom' }    {[5]}    {1×2 cell}    {[80 96]}
      

      student(m,n)指的是单元数组中第m行n列的元素,而student{m,n}指的是单元数组中第m行n列的单元中的内容。

      >> student(1,4)
      
      ans =
      
        1×1 cell 数组
      
          {[85 90]}
      
      >> student{1,4}
      
      ans =
      
          85    90
      
      >> student{2,1}
      
      ans =
      
          'tom'
      
    • 利用cell函数创建单元数组

      >> student=cell(2,4)
      
      student =
      
        2×4 cell 数组
      
          {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}
          {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}
      
      >> %赋值
      >> student{1,1}='kate'
      
      student =
      
        2×4 cell 数组
      
          {'kate'    }    {0×0 double}    {0×0 double}    {0×0 double}
          {0×0 double}    {0×0 double}    {0×0 double}    {0×0 double}
      
      >> student{2,4}=[80,96]
      
      student =
      
        2×4 cell 数组
      
          {'kate'    }    {0×0 double}    {0×0 double}    {0×0 double}
          {0×0 double}    {0×0 double}    {0×0 double}    {[   80 96]}
      
  6. 函数句柄

    >> F_Handle=@sin
    
    F_Handle =
    
      包含以下值的 function_handle:
    
        @sin
    
    >> whos
      Name          Size            Bytes  Class              Attributes
    
      F_Handle      1x1                32  function_handle              
    
    >> x=F_Handle(pi/6)
    
    x =
    
        0.5000
    

基本矩阵操作

  1. 矩阵的创建

    1. 使用矩阵构造符号[]创建矩阵

      >> a=[1 2 3;4 5 6]
      
      a =
      
           1     2     3
           4     5     6
      
      >> b=[1,2,3;4,5,6]
      
      b =
      
           1     2     3
           4     5     6
      
      >> c=[1,2 3;4 5,6]
      
      c =
      
           1     2     3
           4     5     6
      
      >> d=[1 2 3
      4 5 6]
      
      d =
      
           1     2     3
           4     5     6
      
    2. 特殊矩阵的创建

      >> %创建全0矩阵
      >> zeros(2,3)
      
      ans =
      
           0     0     0
           0     0     0
      
      >> %创建全1矩阵
      >> ones(2,3)
      
      ans =
      
           1     1     1
           1     1     1
      
      >> %创建均匀分布的随机矩阵,元素取值范围0.0~1.0
      >> rand(2,3)
      
      ans =
      
          0.8147    0.1270    0.6324
          0.9058    0.9134    0.0975
      
      >> %产生正态分布的随机矩阵
      >> randn(2,3)
      
      ans =
      
         -0.4336    3.5784   -1.3499
          0.3426    2.7694    3.0349
      
      >> %产生N阶魔方矩阵(矩阵的行、列和对角线上元素的和相等)
      >> magic(3)
      
      ans =
      
           8     1     6
           3     5     7
           4     9     2
      
      >> %产生单位矩阵
      >> eye(3)
      
      ans =
      
           1     0     0
           0     1     0
           0     0     1
      
    3. 向量和标量的创建

      >> %使用“from:step:to”方式生成矩阵
      >> x=1:5
      
      x =
      
           1     2     3     4     5
      
      >> y=2:0.5:4
      
      y =
      
          2.0000    2.5000    3.0000    3.5000    4.0000
      
      >> z=[1:2:5;1:3:7]
      
      z =
      
           1     3     5
           1     4     7
      
      >> %使用linspace和logspace函数生成向量
      >> %linspace(a,b,n),a、b、n三个参数分别表示开始值、结束值和元素个数,n若省略则默认为100
      >> %logspace(a,b,n),用来生成对数等分向量,abn与前者含义相同,n若省略则默认为50,生成从10^a~10^b之间按对数等分的n个元素的行向量
      >> x1=linspace(0,2*pi,5)
      
      x1 =
      
               0    1.5708    3.1416    4.7124    6.2832
      
      >> x2=logspace(0,2,3)
      
      x2 =
      
           1    10   100
      
      >> %标量的创建   当m=n=1时,此时创建的矩阵称为标量
      >> x=2
      
      x =
      
           2
      
      >> size(x)
      
      ans =
      
           1     1
      
      >> x=[2]
      
      x =
      
           2
      
      >> size(x)
      
      ans =
      
           1     1
      
    4. 空矩阵的创建

      >> x=[]
      
      x =
      
           []
      
      >> whos x
        Name      Size            Bytes  Class     Attributes
      
        x         0x0                 0  double              
      
  2. 矩阵大小的改变

    1. 矩阵的合并

      >> A=rand(2,3)
      
      A =
      
          0.0318    0.0462    0.8235
          0.2769    0.0971    0.6948
      
      >> B=ones(2,3)
      
      B =
      
           1     1     1
           1     1     1
      
      >> C=[A B]
      
      C =
      
          0.0318    0.0462    0.8235    1.0000    1.0000    1.0000
          0.2769    0.0971    0.6948    1.0000    1.0000    1.0000
      
      >> D=[A;B]
      
      D =
      
          0.0318    0.0462    0.8235
          0.2769    0.0971    0.6948
          1.0000    1.0000    1.0000
          1.0000    1.0000    1.0000
      

      matlab的矩阵合并函数

      函数名函数描述基本调用格式
      cat在指定方向合并矩阵cat(DIM,A,B)在DIM维方向合并矩阵A、B
      cat在指定方向合并矩阵cat(2,A,B),与[A,B]用途一致
      cat在指定方向合并矩阵cat(1,A,B),与[A;B]用途一致
      horzcat在水平方向合并矩阵horzcat(A,B),与[A,B]用途一致
      vertcat在垂直方向合并矩阵vertcat(A,B),与[A;B]用途一致
      repmat通过复制矩阵来构造新的矩阵B=repmat(A,M,N)得到M X N个A的大矩阵
      blkdiag用已知矩阵来构造对角化矩阵Y=blkdiag(A,B,…)得到以矩阵A,B,…为对角线的矩阵Y
    2. 矩阵行列的删除

      >> A=magic(3)
      
      A =
      
           8     1     6
           3     5     7
           4     9     2
      
      >> A(3,:)=[]
      
      A =
      
           8     1     6
           3     5     7
      
      >> A(:,3)=[]
      
      A =
      
           8     1
           3     5
      
  3. 矩阵下标引用

    1. 下标访问单个矩阵元素

      >> A=magic(4)
      
      A =
      
          16     2     3    13
           5    11    10     8
           9     7     6    12
           4    14    15     1
      
      >> a=A(2,3)
      
      a =
      
          10
      
      >> A(2,3)=100
      
      A =
      
          16     2     3    13
           5    11   100     8
           9     7     6    12
           4    14    15     1
      
      
    2. 线性引用矩阵元素

      >> A=magic(3)
      
      A =
      
           8     1     6
           3     5     7
           4     9     2
      
      >> A(4)
      
      ans =
      
           1
      
    3. 访问多个矩阵元素

      >> A=magic(5)
      
      A =
      
          17    24     1     8    15
          23     5     7    14    16
           4     6    13    20    22
          10    12    19    21     3
          11    18    25     2     9
      
      >> A
      
      A =
      
          17    24     1     8    15
          23     5     7    14    16
           4     6    13    20    22
          10    12    19    21     3
          11    18    25     2     9
      
      >> A(:,:)
      
      ans =
      
          17    24     1     8    15
          23     5     7    14    16
           4     6    13    20    22
          10    12    19    21     3
          11    18    25     2     9
      
      >> A(2,:)
      
      ans =
      
          23     5     7    14    16
      
      >> A(:,2)
      
      ans =
      
          24
           5
           6
          12
          18
      
      >> A(2,2:4)
      
      ans =
      
           5     7    14
      
      >> A(2:4,2)
      
      ans =
      
           5
           6
          12
      
      >> A(2:4,2:4)
      
      ans =
      
           5     7    14
           6    13    20
          12    19    21
      
  4. 矩阵信息的获取

    1. 矩阵尺寸信息

      函数名函数描述基本调用格式
      length矩阵最长方向的长度n=length(X),相当于max(size(X))
      ndims矩阵的维数n=ndims(X),矩阵的维数
      numel矩阵的元素个数n=numel(X),矩阵的元素个数
      size矩阵在各个方向的长度d=size(X),返回的大小信息以向量方式存储
      size矩阵在各个方向的长度[m,n]=size(X),返回的大小信息以分开方式存储
      size矩阵在各个方向的长度m=size(X,dim),返回某一维的大小信息
    2. 元素的数据类型

      函数名函数描述基本调用格式
      class返回输入数据的数据类型C=class(obj)
      isa判断输入数据是否为指定类型数据K=isa(obj,‘class_name’)
      iscell判断输入数据是否为单元型tf=iscell(A)
      iscellstr判断输入数据是否为单元型的字符串tf=iscellstr(A)
      ischar判断输入数据是否为字符数组tf=ischar(A)
      isfloat判断输入数据是否为浮点数tf=isfloat(A)
      isinteger判断输入数据是否为整数tf=isinteger(A)
      islogical判断输入数据是否为逻辑值tf=islogical(A)
      isnumeric判断输入数据是否为数值型tf=isnumeric(A)
      isreal判断输入数据是否为实数tf=isreal(A)
      isstruct判断输入数据是否为结构体tf=isstruct(A)
    3. 矩阵的数据结构

      函数名函数描述基本调用格式
      isempty测试矩阵是否为空矩阵tf=isempty(A)
      isscalar测试矩阵是否为标量tf=isscalar(A)
      issparse测试矩阵是否为稀疏矩阵tf=issparse(A)
      isvector测试矩阵是否为向量tf=isvector(A)
  5. 矩阵结构的改变

    >> A=magic(4)
    
    A =
    
        16     2     3    13
         5    11    10     8
         9     7     6    12
         4    14    15     1
    
    >> %按照列的顺序重新排列矩阵元素
    >> B=reshape(A,2,8)
    
    B =
    
        16     9     2     7     3     6    13    12
         5     4    11    14    10    15     8     1
    
    >> %旋转矩阵90°
    >> B=rot90(A)
    
    B =
    
        13     8    12     1
         3    10     6    15
         2    11     7    14
        16     5     9     4
    
    >> B=rot90(A,2)
    
    B =
    
         1    15    14     4
        12     6     7     9
         8    10    11     5
        13     3     2    16
    
    >> %以竖直方向为轴做镜像
    >> B=fliplr(A)
    
    B =
    
        13     3     2    16
         8    10    11     5
        12     6     7     9
         1    15    14     4
    
    >> %以水平方向为轴做镜像
    >> B=flipud(A)
    
    B =
    
         4    14    15     1
         9     7     6    12
         5    11    10     8
        16     2     3    13
    
    >> %以指定的轴做镜像
    >> %B=flipdim(A,dim),dim为1时,以水平方向为轴做镜像,dim为2时,以竖直方向为轴做镜像
    >> B=flipdim(A,1)
    
    B =
    
         4    14    15     1
         9     7     6    12
         5    11    10     8
        16     2     3    13
    
    >> B=flipdim(A,2)
    
    B =
    
        13     3     2    16
         8    10    11     5
        12     6     7     9
         1    15    14     4
    
    >> %矩阵的转秩
    >> B=transpose(A)
    
    B =
    
        16     5     9     4
         2    11     7    14
         3    10     6    15
        13     8    12     1
    
    >> %矩阵的共轭转秩
    >> B=ctranspose(A)
    
    B =
    
        16     5     9     4
         2    11     7    14
         3    10     6    15
        13     8    12     1
    

运算符

  1. 算术运算符

    数组运算矩阵运算
    命令含义命令含义
    A+B对应元素相加A+B与数组运算相同
    A-B对应元素相减A-B与数组运算相同
    S.*B标量S分别与B元素的积S*B与数组运算相同
    A.*B数组对应元素相乘A*B内维相同矩阵的乘积
    S./BS分别被B的元素左除S\BB矩阵分别左除S
    A./BA的元素被B的对应元素除A/B矩阵A右除B即A的逆阵与B相乘
    B.\A结果一定与上行相同B\AA左除B
    A.^SA的每个元素自乘S次A^SA矩阵为方阵时,自乘S次
    A.^SS为小数时,对A各元素分别求非整数幂,得出矩阵A^SS为小数时,方阵A的非整数乘方
    S.^B分别以B的元素为指数求幂值S^BB为方阵时,标量S的矩阵乘方
    A.’非共轭转置,相当于conj(A’)A’共轭转置
    exp(A)以自然数e为底,分别以A的元素为指数求幂expm(A)A的矩阵指数函数
    log(A)对A的各元素求对数logm(A)A的矩阵对数函数
    sqrt(A)对A的各元素求平方根sqrtm(A)A的矩阵平方根函数
  2. 关系运算符

    关系运算符说明
    <小于
    <=小于等于
    >大于
    >=大于等于
    ==等于
    ~=不等于
    >> magic(3)>3*ones(3)
    
    ans =
    
      3×3 logical 数组
    
       1   0   1
       0   1   1
       1   1   0
    
  3. 逻辑运算符

    &(与)、|(或)、~(非)和xor(异或)。

  4. 运算优先级

    优先级运算符
    1圆括号()
    2转置(.’),共轭转置(’),乘方(.^^),矩阵乘方(
    3标量加法(+)、减法(-)、取反(~)
    4乘法(.*),矩阵乘法(*),右除(./),左除(.\),矩阵右除(/),矩阵左除(\)
    5加法(+),减法(-),逻辑非(~)
    6冒号运算符(:)
    7<,<=,>,>=,==,~=
    8数组逻辑与(&)
    9数组逻辑或(|)
    10逻辑与(&&)
    11逻辑或(||)

字符串处理函数

  1. 字符串的构造

    >> str1='Hello'
    
    str1 =
    
        'Hello'
    
    >> str2='World'
    
    str2 =
    
        'World'
    
    >> %字符串的合并
    >> str3=strcat(str1,str2)
    
    str3 =
    
        'HelloWorld'
    
    >> %函数strcat()在合并字符串的同时会把字符串结尾的空格删掉,要保留这些空格,可以使用矩阵合并符[]来实现字符串的合并
    >> str4=[str1 str2]
    
    str4 =
    
        'HelloWorld'
    
    >> %使用二维字符数组
    >> str5=[str1;str2]
    
    str5 =
    
      2×5 char 数组
    
        'Hello'
        'World'
    
    >> %使用str2mat、strvcat、char函数
    >> str6=str2mat(str1,str2)
    
    str6 =
    
      2×5 char 数组
    
        'Hello'
        'World'
    
    >> str7=strvcat(str1,str2)
    
    str7 =
    
      2×5 char 数组
    
        'Hello'
        'World'
    
    >> str8=char(str1,str2)
    
    str8 =
    
      2×5 char 数组
    
        'Hello'
        'World'
    
  2. 字符串比较函数

    1. 字符串比较函数

      函数名功能描述基本调用格式
      strcmp比较两个字符串是否完全相等strcmp(s1,s2),是则返回1,否则返回0
      strncmp比较两个字符串前N个字符是否相等strncmp(s1,s2,N),是则返回1,否则返回0
      strcmpi比较两个字符串是否完全相等,忽略字母大小写strcmpi(s1,s2),是则返回1,否则返回0
      strncmpi比较两个字符串前N个字符是否相等,忽略字母大小写strncmpi(s1,s2,N),是则返回1,否则返回0
    2. 用关系运算符比较字符串

      可以对字符串运用关系运算符,但要求两个字符串具有相同的长度,或者其中一个是标量。

  3. 字符串查找和替换函数

    函数名基本调用格式及功能描述
    strrepstrrep(str1,str2,str3),它把str1中所有的str2字符串用str3来替换
    strfindstrfind(str,patten),查找str中是否有patten,有则返回出现位置,没有则返回空数组
    findstrfindstr(str1,str2),查找str1和str2中较短字符串在较长字符串中出现的位置,没有出现则返回空数组
    strmatchstrmatch(patten,str),检查patten是否和str最左侧部分一致
    strtokstrtok(str,char),返回str中由char指定的字符串前的部分和之后的部分
  4. 字符串与数值的转换

    1. 数值—>字符串

      函数名功能描述
      char把一个数值截取小数部分,然后转换为等值的字符串
      int2str把一个数值的小数部分四舍五入,然后转换为字符串
      num2str把一个数值类型的数据转换为字符串
      dec2hex把一个正整数转换为十六进制的字符串表示
      dec2bin把一个正整数转换为二进制的字符串表示
      dec2base把一个正整数转换为任何进制的字符串表示
    2. 字符串—>数值

      函数名功能描述
      double把字符串转换为等值的整数
      str2num把一个字符串转换为数值类型
      str2double把一个字符串转换为数值类型
      hex2dec把一个十六进制字符串转换为十进制整数
      bin2dec把一个二进制字符串转换为十进制整数
      base2dec把一个任意进制字符串转换为十进制整数

文件读取I/O

  1. 文件的打开与关闭

    1. 打开文件

      >> fid=fopen(文件名,'打开方式')
      

      当成功打开一个文件后,返回的文件指针fid是一个非负的整数;如果打开文件失败,fid=-1。

      打开方式功能描述
      ‘r’只读方式打开文件(默认的方式)。该文件必须已存在
      ‘r+’读写方式打开文件,打开后先读后写。该文件必须已存在
      ‘w’打开后写入数据。该文件已存在则更新;不存在则创建
      ‘w+’读写方式打开文件,先读后写。该文件已存在则更新;不存在则创建
      ‘a’在打开的文件末端添加数据。文件不存在则创建
      ‘a+’打开文件后,先读入数据再添加数据。文件不存在则创建

      另外,在这些字符串后添加一个“t”,如’rt‘或’wt+‘,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。

    2. 关闭文件

      >> sta=fclose(fid)
      

      若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(‘all’)。

  2. 读取与写入二进制文件

    1. 写二进制文件

      >> COUNT=fwrite(fid,A,precision)
      

      COUNT返回所写的数据元素个数(可缺省);fid为文件句柄;A用来存放写入文件的数据;precision代表数据精度,常用的数据精度有char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。

    2. 读二进制文件

      >> [A,COUNT]=fread(fid,size,precision)
      

      A是用于存放读取数据的矩阵;COUNT是返回所读取的数据元素个数;fid为文件句柄;size为可选项,若不选用则读取整个文件内容,若选用则它的值可以是下列值,即N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M X N的矩阵中,数据按列存放);precision用于控制所写数据的精度,其形式与fwrite函数相同。

  3. 写入与读取文本文件

    1. 读文本文件

      >> [A,COUNT]=fscanf(fid,format,size)
      

      A用于存放读取的数据;COUNT返回所读取的数据元素个数;fid为文件句柄;format用来控制读取的数据格式,由%加上格式符组成,格式符如下表所示,在%与格式符之间还可以插入附加格式说明符,如数据宽度说明等;size为可选项,决定矩阵A中数据的排列形式,它可以取下列值,即N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M X N的矩阵中,数据按列存放)。

      格式符含义
      c字符
      d十进制数
      e指数格式的浮点数
      f一般格式的浮点数
      g%e和%f的紧凑格式
      i有符号整数
      o有符号八进制整数
      s字符串
      u有符号十进制整数
      x有符号十六进制整数
    2. 写文本文件

      >> fprintf(fid,format,A)
      

      fid为文件句柄,指定要写入数据的文件;format是用来控制所写数据格式的格式符,与fscanf函数相同;A是用来存放数据的矩阵。

  4. 文件位置

    1. 文件位置指针

    2. 移动文件位置指针的函数:fseek

      >> status=fseek(fid,offset,origin)
      
      1. 把fid所指文件的位置指针从origin指定的参照位置移动由参数offset指定的字节数。
      2. 参数offset表示位置指针相对移动的字节数,若为正整数表示向文件尾方向移动,若为负整数则表示向文件头方向移动。
      3. 参数origin用来指定移动位置指针的参考起点,它的取值为:
        • 'bot’或-1:文件的开头;
        • 'cof’或0:文件的当前位置;
        • 'eof’或1:文件的结尾。
      4. 操作成功则返回给status的值为0,失败则返回-1。
    3. 获取当前指针位置的函数:ftell

      >> pos=ftell(fid)
      

      返回从文件开头到指针当前位置的字节数,若返回-1则表示获取当前指针位置失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值