当前位置: 首页 > 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

http://www.xdnf.cn/news/172279.html

相关文章:

  • 跨专业自学AI人工智能学习路线图(2025版)
  • Android完整开发环境搭建/Studio安装/NDK/本地Gradle下载配置/创建AVD/运行一个Android项目/常用插件
  • 金融数据分析(Python)个人学习笔记(13):自然语言处理
  • Kubernetes学习笔记-配置Service对接第三方访问
  • 【Redis】服务端高并发分布式结构演进之路
  • 零基础小白如何上岸数模国奖
  • IDEA 连接 Oracle 数据库
  • 安卓7.0以上抓包配置--Charles
  • ​​全栈自动化:从零构建智能CI/CD流水线​
  • 手搓传染病模型(SEIR)
  • k8s的volume
  • Alibaba Cloud Linux 3.2104 LTS 64位 容器优化版安装docker docker compose记录
  • MyBatis DTD [Element type “if“ must be declared]
  • Kafka HA集群配置搭建与SpringBoot使用示例总结
  • LeetCode -- Flora -- edit 2025-04-27
  • Spring AI Alibaba - MCP连接 MySQL
  • docker--docker的基本环境配置
  • Stable Diffusion 技术全景解析与行业竞争力分析
  • 小程序发布后,不能强更的情况下,怎么通知到用户需要去更新?
  • 图论---最大流(Dinic)
  • Golang 类型方法
  • 【2025最近Java面试八股】Spring中循环依赖的问题?怎么解决的?
  • 层级时间轮的 Golang 实现原理与实践
  • 环境DNA宏条形码技术,鱼类检测引物如何选择?
  • 基于知识库的客户服务工具
  • Unity Post Processing 小记 【使用泛光实现灯光亮度效果】
  • 2P4M-ASEMI机器人功率器件专用2P4M
  • ShardingSphere-Proxy数据隔离方案:不同用户操作不同的数据库
  • C#进阶学习(十五)关于特性的认识
  • Android10.0 Android.bp文件详解,以及内置app编写Android.bp文件