Matlab基础知识

1.变量及类型转换

double()转换为双精度浮点数
single()转换为单精度浮点型
int8()转换为8位有符号整数
int16()转换为16位有符号整数
int32()转换为32位有符号整数
int64()转换为64位有符号整数
uint8()转换为8位无符号整数
uint16()转换为16位无符号整数
uint64()转换为64位无符号整数
1.字符型character(char)
  • 在ASCLL中使用0~255之间的数字代码表示。

  • 放入一对单引号中创建字符或字符串。

例如:

 s1='A';
 whos;
 disp(uint16(s1));#65
2.字符串String
s1='hello';
 s2='world';

s1="hello world"; s2='hello world';

s1s2不同,s1 包含与 s2 相同的字符。但是s2 是字符向量,而 s1 是字符串标量。

3.字符串拼接
s1='hello';
 s2='world';
 s3=[s1 s2];#s3的大小为1*10
 s4=[s1;s2];#s4的大小为2*5

若s1=“hello”;s2=“world”;

[s1,s2] = “hello” “world”

[s1;s2] = “hello”

“world”

4.逻辑运算和赋值
字符数组与单个字符进行逻辑运算

        结果为该字符与字符串中字符一一进行逻辑运算,返回一个一维向量。

如:

 str = 'aardvark'; 
 'a' == str
 ​
 #结果
 ans =
 ​
   1×8 logical 数组
 ​
    1   1   0   0   0   1   0   0


str = 'abcdabvdabcdsdsa';   
str(str == 'a') = 'Z';     #若结果为1则改变该字符的值为‘Z’
5.字符数组的翻转
 str = 'hello world';
 s2=str(length(str):-1:1);
 # s2 = 'dlrow olleh';

函数fliplr():将数组从左向右翻转

语法: B = fliplr(A)

6.结构体
student=struct('name','lilei','id','2230090211','phone','10086','grade',[100 99 98 97 96 95 94 93 92 91 90]);
 disp(student);
 disp(student.grade);
 student(2).name='lijiahang';
 disp(student(2));
结构体函数
函数作用
struct创建结构体
struct2cell将结构体转换为元胞数组
cell2struct将元胞数组转换为结构体
isstruct判断某变量是否是结构体
structfun对结构体的某字段都对应某函数
fieldnames获取结构体的所有字段名
isfield判断结构体是否包含某字段
getfield获取结构体某字段的值
setfield为结构体中的某字段赋值
rmfield删除结构体中的某字段
orderfields为结构体字段排序
7.元胞数组
  • 元胞数组是一种通用的数据容器,可以包含不同类型的数据,包括数值、字符串、函数句柄、其他元胞数组等。元胞数组用花括号 { }来访问其元素。

  • 结构体是一种有序的数据容器,每个元素都包含一个字段名和相应的值。字段值可以是不同类型的数据,但通常结构体用于组织和存储具有不同属性的数据。结构体用点运算符.来访问其字段。

访问元素:

元胞数组中的元素可以是任何类型的数据,因此访问元素时需要使用花括号 {},并指定索引位置

结构体的元素是由字段名标识的,因此访问元素时需要使用点运算符.,并指定字段名

数据组织:

  • 元胞数组通常用于存储不同类型的数据,或者需要灵活处理不同类型数据的情况。

  • 结构体通常用于组织和存储具有不同属性的数据,例如,一个人的姓名、年龄、地址等属性可以存储在一个结构体中,每个属性用一个字段表示。

索引成员
 B=cell(2,2);
 B(1,1)={'This is the first cell'};
 B(1,2)={[5+j*6 4+j*5]};
 B(2,1)={[1 2 3; 4 5 6; 7 8 9]};
 B(2,2)={['Tim' 'Chris']}
 B{2,1}(1,:); #1 2 3
元胞数组函数
函数作用
cell创建一个元胞数组
iscell判断某类型的变量是否为元胞数组
cell2mat将元胞数组转为矩阵
cell2struct将元胞数组转为结构体
mat2cell将数组转为指定大小的元胞数组
num2cell将数组转为相同大小的元胞数组
struct2cell将结构体转换为元胞数组
celldisp递归的显示元胞数组中的内容
cellplot以图像的形式绘制元胞数组的结构
cellfun对元胞数组的每个元胞应用某个函数

函数 mat2cell():将数组转换为在元胞中包含子数组的元胞数组

语法:C = mat2cell(A,dim1Dist,...,dimNDist)

示例:

a=magic(5);
 b=num2cell(a);
 c=mat2cell(a,[2 3],[2 2 1]);
 disp(c);
 #ans
 C=2×3 cell array
     {2x2 double}    {2x2 double}    {2x1 double}
     {3x2 double}    {3x2 double}    {3x1 double}
  • M = magic(n) 幻方矩阵

    M = magic(n) 返回由 1n2 的整数构成并且总行数和总列数相等的 n×n 矩阵。n 的阶数必须是大于或等于 3 的标量才能创建有效的幻方矩阵。

如:

$$
magic(3)=\left[ \matrix{ 8 & 1 & 6\\ 3 & 5 & 7\\ 4 & 9 & 2\\ } \right]
$$

 
  • dim1Dist,...,dimNDist 各个数组中的参数和必修等与输入矩阵的的每个维度。

    如:第三行中的c=mat2cell(a,[2 3],[2 2 1])中2+3=5 且 2+2+1=5。

  • 多维元胞数组:一个三维的元胞数组可以 有 行 (row), 列(column),层(layer)三个维度.在对元胞数组进行索引时,优先级从高到低的顺序分别是: 行→列→层

8.cat()

使用cat 函数可以在指定维度上对元胞数组进行拼接

 A=[1,2;3,4];
 b=[5,6;7,8];
 C=cat(1,A,B);#行
 #ans=
 #     1     2
 #     3     4
 #     5     6
 #     7     8
 D=cat(2,A,B);#列
 #ans=
 #     1     2     5     6
 #     3     4     7     8
 E=cat(3,A,B);#层
 #ans=
 ​
 #(:,:,1) =
 #    1     2
 #    3     4
 ​
 #(:,:,2) =
 #     5     6
 #     7     8
9.reshape()

重构数组,重组数组的大小。

语法
 B= reshape(A,m,n);

其中 A 是要重组的数组,m 和 n 是新数组的行数和列数。

示例

A={'James Bond',[1 2;3 4;5 6];pi,magic(5)};
 B=reshape(A,1,4);
10.判断变量数据类型的函数
函数作用
isinteger判断输入参数是否为整型数数组
islogical判断输入参数是否为逻辑量数组
isnumeric判断输入参数是否为数值数组
isreal判断输入参数是否为实数数组
ischar判断输入参数是否为字符数组
iscell判断输入参数是否为元胞数组
isfloat判断输入数组是否为浮点数数组
ishandle判断输入数组是否为有效的图形句柄
isempty判断输入数组是否为空
isprime确定哪些数组元素是质数
isnan确定哪些数组元素为NaN
isinf确定哪些数组元素为Inf
isqueal判断数组是否相等

Nan:值为空

Inf:值为正无穷的标量

clear all(或 clear) 清空工作区内存中的变量

close all 关闭之前程序绘制的图像

clc 清空之前程序在终端的输出

  • 在Matlab中,省略号可以将多行语句拼接为一行

 A = [1 2 3 4 5 6;...
      6 5 4 3 2 1];

11.脚本与函数

脚本函数
无输入参数有输入参数
无输出参数有输出参数
对全局工作区中的数据进行操作对本地工作区中的数据进行操作

12.函数

官方文档

  • 函数名与文件名匹配

  • 目录:Matlab中需要查找的函数

  • 输出和输入变量是可选的

  • 局部变量:dim和flag不能被访问

dim 参数:

在很多 MATLAB 函数中,dim 通常表示在哪个维度上进行操作。例如,对于 sum 函数,你可以指定在哪个维度上进行求和。语法可能类似于 sum(A, dim),其中 A 是输入矩阵,而dim 是指定的维度。 举例:sum(A, 1) 表示沿着矩阵的第一个维度(列)进行求和。 flag 参数:

flag 通常用于控制函数的某些特定行为。例如,flag 参数可能是一个布尔值,用于启用或禁用某些功能。具体的功能和用法会根据函数而异。 举例:在 sort 函数中,flag 参数可能用于控制升序还是降序排序。语法可能是 sort(A, 'descend'),其中 descend 是 flag 参数。

语法
 function [y1,...,yN] = myfun(x1,...,xM)
 [Matlab code]
 end

可以将函数保存在以下位置(.m文件):

  • 只包含函数定义的函数文件中。文件的名称须与文件中第一个函数的名称一致。

  • 包含命令和函数定义的脚本文件中。函数必须位于该文件的末尾。脚本文件不能与文件中的函数具有相同的名称。R2016b 或更高版本的脚本中支持函数。

文件可以包含多个局部函数或嵌套函数。为提高可读性,可使用 end关键字来表示文件中每个函数的末尾。以下情况下需要 end 关键字:

  • 文件中有任意函数包含嵌套函数。

  • 该函数是函数文件中的局部函数,并且文件中有局部函数使用 end 关键字。

  • 该函数是脚本文件内的局部函数。

参数列表
函数参数意义
imputname输入变量名列表
mfilename函数源代码文件名
nargin输入变量数
nargout输出变量数
varargin可变长输入参数列表
varargout可变长输出参数列表
  • Matlab不提供指定默认参数值以及函数重载等语法,但灵活使用上述内置函数参数,可以在一定程度上实现指定默认参数以及方法重载。

函数句柄
  • 可以使用函数句柄的形式定义函数,这更接近数学上的函数定义,其语法如下:

函数句柄 = @(输入变量) 输出变量

示例:

 f = @(x) exp(-2*x);#定义
 x=0:0.1:2;
 plot(x,f(x));#调用
练习

编写一个摄氏温度Celsius转换为华氏温度Fahrenheit的函数,该脚本一直运行,知道没有要提供转换的数字为止。

F=\frac{9}{5}C+32

 function myfun()
 while(true)
     %‘s’:以字符串的形式输入
     %输入摄氏温度
     str_c=input('输入摄氏温度:','s');
     %判断输入是否为空行
     if isempty(str_c)
         break;
     else
         c=str2double(str_c);
         %判断输入的是否为有效数字
         if isnan(c)
             disp("无效数字,重新输入");
         else
             F=9/5*c+32;
             disp("等效摄氏温度为 "+F);
         end
     end
 end
 end

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__羽辞__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值