Matlab学习(台大郭彦甫)第4节-变数(变量)与档案存取

第4节 变数(变量)与档案存取

4.1 MATLAB Data (Variables) Types 数据类型

在这里插入图片描述

4.1.1 numeric (数值型)

一些常见的数值类型的转换函数:
在这里插入图片描述

4.1.2 char(字符型)

  • A character is represented in ASCII using a numeric code between 0 to 255(字符通过ASCII用0到255之间的数字代码表示)
  • Create a character or a string by putting them into a pair of apostrophe(将一个字符或字符串放入一对引号中)
    在这里插入图片描述

示例:

clc
clear
s1 = 'h'
whos
uint16(s1)

运行结果:
在这里插入图片描述
注意:
1)这里whos指令用于列出工作区中的变量及大小和类型。
2)对于ASCII码,字母的大小写是不一样的。

示例:

clc;
clear;
s1 = 'H';
whos;
uint16(s1)

运行结果:
在这里插入图片描述
可以看到,H和h对应的ASCII的码有区别。

4.1.3 string (字符串)

  • An array collects characters:(通过数组收集字符)
  • String concatenation:(字符串的连接)

示例:

clear;
clc;
s1 = 'Example';
s2 = 'String';
s3 = [s1,s2];
s4 = [s1;s1];
fprintf('s1 = %s \n s2 = %s \n s3 = %s \n s4 = %s',s1,s2,s3,s4);

运行结果:
在这里插入图片描述

注意:
1)s = [s1;s2] 在使用时需要s1 和s2 的长度相等,结果是叠加;
2)fprintf()函数,可以将数据按指定格式写入到文本文件中。

4.1.4 Logical Operations and Assignments(逻辑操作和分配)

  • Many numerical and logical operators can be applied to strings(许多数字和逻辑运算符可以应用于字符串)

示例代码:

str = 'aardvark';
'a' == str

结果:(查找str字符串中,若等于‘a’则为1,否则为0)
在这里插入图片描述

  • try this
str = 'aardvark';
str(str == 'a') = 'z'

结果:(将str字符串中为‘a’的替换成字母‘z’)
在这里插入图片描述

  • What if we want to compare the entries string with another?(如果我们想将整个字符串与另一个字符串进行比较呢)

使用:tf=strcmp(s1,s2)

tf=strcmp(s1,s2)比较s1和s2,如果两者相同,则返回1(true),否则返回0(false)。

习题:
将字符串s1颠倒地赋值给s2
在这里插入图片描述
代码:

clear;
clc;
s1='I like the letter E';
for i=1:19
    s2(i)=s1(20-i);
end
disp(s2);

运行结果:
在这里插入图片描述
注意:这里的191是提前数好的,s1里面有19个字符。

4.1.5 Structure(结构体)

(1)A method of storing heterogeneous data(一种存储异构数据的方法)
(2)Structures contain arrays called fields(结构包含称为字段的数组)
(3)Student assignment grade:(例如学生作业成绩)

示例:
在这里插入图片描述

clear;
clc;
student.name = 'John Doe';
student.id = 'jdo2@sfu.ca';
student.number = 301073268;
student.grade = [100, 75, 73;95, 91, 85.5;100, 98, 72];
disp(student);
disp(student.grade);

运行结果:
在这里插入图片描述
(4)Adding Information to A Structure(向结构体中添加信息)
示例:
在这里插入图片描述

student(2).name = 'Ann Lane';
student(2).id = 'aln4@sfu.ca';
student(2).number = 301078853;
student(2).grade = [95 100 90; 95 82 97; 100 85 100];
disp(student);
disp(student(1));
disp(student(2));

运行结果:
在这里插入图片描述
(5)习题:检索Ann Lane的grade,如90分
在这里插入图片描述
代码:

disp(student(2).grade(1,3));

或者

disp(student(2).grade(7));

运行结果:
在这里插入图片描述
(6)Structure Functions(结构体函数)
在这里插入图片描述

  • cell2struct()函数
    Convert cell array to structure array(将单元格数组转换为结构数组)

  • fieldnames()函数
    Field names of structure,or public fields of object(结构的字段名,或对象的公共字段)

  • getfield()函数
    Field of structure array(结构数组的字段)

  • isfield()函数
    Determine whether input is structure array field(确定输入是否为结构数组字段)

  • isstruct()函数
    Determine whether input is structure array(确定输入是否为结构数组)

  • orderfields()函数
    Order fields of structure array(结构数组的规则)

  • rmfield()函数

  • Remove fields from structure(从结构中删除字段)

  • setfield()函数
    Assign values to structure array field(为结构数组字段赋值)

  • struct()函数
    Create structure array(创建结构数组)

  • struct2cell()函数
    Convert structure to cell array(将结构转换为单元数组)

  • stuctfun()函数
    Apply function to each field of scalar structure(将函数应用于标量结构的每个字段)

(7)Nesting Structures(嵌套结构)
在这里插入图片描述
示例:

clear;
clc;
A = struct('data', [3 4 7; 8 0 1], 'nest',struct('testnum', 'Test 1', 'xdata', [4 2 8],'ydata', [7 1 6]));
A(2).data = [9 3 2; 7 6 5];
A(2).nest.testnum = 'Test 2';
A(2).nest.xdata = [3 4 2];
A(2).nest.ydata = [5 0 9];
disp(A);
disp(A(1).nest);
disp(A(2).nest.xdata(2));

运行结果:
在这里插入图片描述
注意:struct()函数,其语法为:s = struct(field1,value1,…,fieldN,valueN)

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值