当前位置: 首页 > news >正文

数模学习:二,MATLAB的基本语法使用

注释代码:

(1)在每行语句后面加上分号,则不显示该行代码的运算结果

    在每行代码前加%,则该行代码会被注释掉

(2) 多行注释:

    选中要注释的多行语句,按快捷键Ctrl + R

(3) 取消注释:

    选中要注释的多行语句,按快捷键Ctrl + T; 也可以逐行删去%或;。

删除与清空操作:

(1) clear可以清楚工作区的所有变量;

(2)clc可以清除工作区的所有变量,让屏幕变得干净。

(3)故在很多代码开头,都会见到:

clear; clc(注意分号也可用于区分行的作用)

这两条一起使用,起到初始化的作用,防止之前的结果对新脚本文件(后缀名是 .m )产生干扰、

 输入和输出操作:

disp函数:

matlab中disp函数就是屏幕输出函数,相当于c++中的cout函数。

例如:

disp('hello world')

字符串用单引号或双引号围起来均可

再输出一个行向量:

a = [1,2,3];  //加分号避免直接显示该变量的值
a = [1 2 3] ;  //同一行之间可以用逗号分隔,也可以用空格分隔
disp(a)

输出一个列向量;

a= [1;2;3];  //分号可以用来分隔每一行的元素
disp(a)

注意:disp函数比较特殊,在后面不管加不加分号都会展现输出结果;

MATLAB中两个字符串的合并:

(1) 借助strcat函数:

strcat(str1,str2,str3,......strn) //中间用逗号隔开

(2)看成为一个向量的形式:

['字符串1','字符串2']
或
['字符串1' '字符串2']

一个有用的字符串函数——num2str——将数字转化为字符串:

如要输出一个 “字符串 + 数字”, 将数字当成字符串展示时, 一定要将其转化成字符串后再输出:

c = 100;
disp(['c = ' c])
% 输出结果为:c= d  //通过ASCII码来解释
% 想要输出 c= 100,则应该写为:
disp(['c = ' num2str(c)])

input函数:

一般我们会将输入的数、向量、矩阵、字符串等赋给一个变量,这里我们赋给A

A = input('请输入A:' );  %%加上分号,输入后不展示输入的值B = input('请输入B:' )   %%不加分号,输入后展示输出的值

sum函数:

(1) 如果是向量(无论是行向量,还是列向量)都是直接求和。

e = [1 2 3];sum(e)

(2) 如果是矩阵,则需要根据行和列的方向进行区分。

%%MATLAB中矩阵的表示:
e = [1, 2; 3, 4; 5, 6]  %%矩阵同行元素用,或空格隔开,不同行之间用分号隔开a = sum(e)
>> 9 12   %%直接对矩阵求和,实际上是按列求和,得到一个行向量;a = sum(e, 1)   %%   dim(维度) [ dim = 1,表示按列; dim = 2,表示按行;]
>> 9 12   %%加指标1,还是按照列求和a = sum(e, 2)   %% 加指标2 ,按照行求和,得到一个列向量
>>  3711  
%想对整个矩阵进行求和,有两种方法:
% 法1————按行/列求和后,再进行一次求和a = sum(sum(e))
%法2——  % e(:) 表示按照列的方向分开后再拼接起来。a = sum(e(:)) 

MATLAB中如何提取出矩阵中指定位置的元素:

(1) 取指定行和指定列的一个元素:

假设矩阵为A,a = A( i, j ) 表示是矩阵第i行,第j列的元素。

(2) 取指定某一行的全部元素(输出一个行向量):

a = A( i , : ) 表示是输出矩阵A 第i行的全部元素。

(3) 取指定某一列的全部元素(输出一个列向量):

a = A( :  ,  i ) 表示是输出矩阵A 第i列的全部元素。

(4) 取指定的某些行的全部元素;

补充——MATLAB中等差数列的生成:
               起始值: 等差d : 结束值

例如:

1: 10: 100
>> 1 11 21 31 41 51 61 71 81 91
A([2,5],:)   %%只取第二行和第五行A(2:5, :)    %%取第二行到第五行A(2:2:5, :)  %% 取第二行和第四行(从行数2开始,每次递增2个单位,到5结束,即取2和4)A(2: end, :)  %% 取第二行到最后一行

(5) 取出全部元素:

A(:) %按列拼接,最终输出得到一个列向量

size函数:

size函数用来求一个矩阵的大小,它返回一个行向量,第一个元素是矩阵的行数,第二个元素使矩阵的列数。

例如:

A = [1,2,3;4,5,6];
size(A)>>   2    3    %%该矩阵有2行,3列

若要单独返回行数或列数:

r = size(A, 1);  %返回行数
c = size(A, 2);  %返回列数

repmat函数:

B = repmat(A, m, n) %将矩阵A复制m * n 块,即把A作为B的元素,B由m * n个A平铺而成。A = [1,2,3;4,5,6]
B = repmat(A, 2, 2)
>> B =1     2     3     1     2     34     5     6     4     5     61     2     3     1     2     34     5     6     4     5     6

Matlab中矩阵的运算

1,
MATLAB在矩阵的运算中,“ * ” 号和 “ / ”号代表矩阵之间的乘法与除法。
(注:矩阵的除法就是A * B矩阵的逆)

例:

A = [1, 2; 3, 4]
B = [1,0;1,1]A * B>>ans =3     27     4

2,若要实现相同形状矩阵之间对应元素之间的乘除法则需要用到点乘和点除,即

“  .* ” 和“ ./ ”。

A = [1,2,3;4,5,6];
A .* 2>>ans =2     4     68    10    12

3,每个元素同时和常数乘除,既可以使用点乘和点除,也可以直接使用乘除来实现。

4,若要对矩阵的每一个元素进行乘方,既可以写成 A .* A,也可以写成A .^ 2。

求矩阵的特征值与特征向量:

在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A)。

(1) E = eig(A):求矩阵A的全部特征值,构成向量E。

A = [1 2 3;2 2 1;2 0 3];
E = eig(A)>>E =-1.31665.31662.0000

(2)[V,D] = eig(A):求矩阵A的全部特征值,同时构成对角阵D,并求A的特征向量构成V的列向量

(V中的每一列都是D中与之相同列的特征值的特征向量)。

A = [1 2 3;2 2 1;2 2 3];
[V,D] = eig(A)>>V =-0.5806   -0.8327    0.2322-0.4531    0.5309   -0.8169-0.6765    0.1572    0.5280D =6.0561         0         00   -0.8412         00         0    0.7852

find函数的基本用法:

find函数可以用来返回向量或矩阵中不为0的元素的位置索引。

>> A = [1 0 4 -3 0 0 0 8 6];
>> ind = find(A)ind =1     3     4     8     9

若只返回前2个不为0的元素位置:

ind = find(A, 2)

上面的例子是向量,若A是一个矩阵,又将怎么返回呢?

>> A = [1 -3 0;0 0 8;4 0 6];
>> ind = find(A)ind =13489
%再一次印证了矩阵在matlab中的存储是按照列存储的,即:
对于矩阵A:
1  -3  0
0  0   8
4  0   6
存储方式为:
1
0
4
-3
0
0
0
8
6

假如我们需要按照行列的信息输出怎么办?

[r,c] = find(A)  //r表示行,c表示列
>> A = [1 -3 0;0 0 8;4 0 6];
>> ind = find(A)ind =13489>> 
>> [r,c] = find(A)r =13123c =11233
即有(1,1)元素不为0,(3,1)元素不为0,(1,2)元素不为0.......

矩阵与常数的大小判断运算:

共有 三种判断运算符,大于 > ,小于 < , 等于 == ;

矩阵与常数的比较结果会返回一个逻辑矩阵。对应位置的1表示符合条件,0表示与条件不符

>> A = [1 -3 0;0 0 8;4 0 6];
>> A > 0ans =3×3 logical 数组1   0   00   0   11   0   1

判断语句

if所在行不需要冒号,语句的最后一定要以end结尾;中间的语句要注意缩进;

>> a = input("请输入考试分数");>> if a >= 85disp("优秀")elseif a >= 60disp("合格")elsedisp("挂科")end

相关文章:

  • 安卓APP开发项目源码
  • Tauri打包时出现WixTools以及NSIS报错
  • 基于ArcGIS的洪水灾害普查、风险评估及淹没制图技术研究​
  • SpringBoot配置RestTemplate并理解单例模式详解
  • 硬盘损坏数据恢复后对python程序的影响
  • 【创新实训个人博客】multi-agent调研(2)
  • Ubuntu下MySQL的安装
  • LLM应用于自动驾驶方向相关论文整理(大模型在自动驾驶方向的相关研究)
  • IP地址如何切换到国内别的省份?一步步指导
  • 于键值(KV)的表
  • MyBatis DTD [Element type “if“ must be declared]
  • vue+neo4j+flask 音乐知识图谱推荐系统
  • EXCEL常用函数公式和VBA汇总第二篇
  • 机器学习-入门-线性模型(1)
  • 【MCP】从一个天气查询服务带你了解MCP
  • 学习笔记:Qlib 量化投资平台框架 — FIRST STEPS
  • Linux系统之设置开机启动运行桌面环境
  • C++如何使用调试器(如GDB、LLDB)进行程序调试保姆级教程(2万字长文)
  • day51—二分法—x 的平方根(LeetCode-69)
  • 计算机基本理论与 ARM 相关概念深度解析
  • 餐饮店直播顾客用餐,律师:公共场所并非无隐私,需对方同意
  • 中方会否公布铁线礁的领海基线?外交部:中方执法活动旨在反制菲方侵权挑衅
  • 美乌总统梵蒂冈会谈,外交部:望有关各方继续通过对话谈判解决危机
  • 超级干细胞有助改善生育治疗
  • 十四届全国人大常委会第十五次会议在京举行,审议民营经济促进法草案等
  • 三杀皇马剑指四冠,硬扛到底的巴萨,赢球又赢人