首页 > 其他分享 >MATLAB基础语法

MATLAB基础语法

时间:2024-08-09 22:17:20浏览次数:3  
标签:返回 rand H2 基础 H1 矩阵 语法 MATLAB AX

学习材料

界面认识

clc 清除终端

新建 > 脚本 新文件

clear all 清除右侧工作区

%% 独占一行的注释(有上下横线分割)

% 单行注释

下标从1开始

数据类型

数字

字符串

  • 单引号括住

  • abs(s) 返回 s 变量的ASCII码

  • char(97) 返回ASCII码对应的字符,即 a

  • num2str(X)

    • s = num2str(X) 将数值数组转换为表示数字的字符数组
    • num2str(X,precision) 返回表示数字的字符数组,最大有效位数由 precision 指定
    • s = num2str(X, formatSpec)formatSpec 指定的格式应用到X所有元素
  • length(str) 返回字符串长度

矩阵

  • A = [1 2 3; 4 5 2; 3 2 7] 矩阵

  • B = A' A的转置

  • C = A(:) 竖着拉伸

  • D = inv(A) 逆矩阵

  • A * D 矩阵乘法

  • E = zeros(10, 5, 3) 3个维度,每个维度10行5列全是0的矩阵

  • E(:, :, 1) = rand(10, 5)

  • rand

    • 均在0~1之间
    • X = rand 返回从区间 (0,1) 的均匀分布中得到的随机标量
    • X = rand(n) 返回一个均匀分布的随机数组成的 n×n 矩阵
    • X = rand(sz1,...,szN) 返回由随机数组成的 sz1×...×szN 数组,其中 sz1,...,szN 指示每个维度的大小。例如:rand(3,4) 返回一个 3×4 的矩阵
    • X = rand(sz) 返回由随机数组成的数组,其中大小向量 sz 定义 size(X)。例如:rand([3 4]) 返回一个 3×4 的矩阵
    • X = rand(___,typename) 返回由 typename 数据类型的随机数组成的数组。typename 输入可以是 singledouble
    • r = a + (b-a).*rand(N,1) 生成区间 (a,b) 内的 N 个随机数
    • X = rand([3,2,3]) 生成 3×2×3 数组,X(:,:,1) 是第一个维度的矩阵,即 X(:,:,1) = rand(3, 2)
  • randi

    • randi(iMax) 在开区间 (0, iMax) 中的随机数
    • randi(iMax, m, n) m*n 矩阵
    • r = randi([iMin,iMax],m,n) 在开区间 (iMin,iMax) 生成 m*n 随机矩阵

元胞数组

  • 像 C++ 中的类
  • A = cell(1, 6) 生成1行6列,每个元素是 []
  • A[2] = eye(3) 第二个盒子成了 3*3 double 矩阵
  • A[5] = magic(5) 生成5阶幻方(1~25排成矩阵,行、列、主副对角线的和都相等,为 n*(n^2+1)/2

结构体

  • python中的字典
  • books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30 40])
  • books.name 相当于python books["name"]
  • books.name(1) 返回 'Machine Learning',取出cell
  • books.name[1] 返回 Machine Learning,取出字符串

矩阵操作

定义

B = 1:2:9 从最小值1开始,2步2步地跳,保证所有元素不大于9

C = repmat(B, 3, 2) 把B矩阵按行重复3次,按列重复2次

D = ones(2, 4) 2行4列元素均为1的矩阵

四则运算

F = A .* B 对应位相乘

G = A / B 相当于A乘B的逆

矩阵的下标

A = magic(5)
B = A(2,3)	% 取到a23元素
C = A(3,:)	% 取第三行,:表示所有
D = A(:,4)	% 取第4列
[m, n] = find(A > 20)	% 找到大于20的序号值/矩阵,下标

程序结构

循环结构

for 循环变量 = 初值:步长:终值	% 步长默认为1
	执行语句;
end

while 条件表达式
	执行语句;
end

分支结构

if 条件
	语句;
end


if 条件1
	语句体1;
elseif 条件2
	语句体2;
else
	语句体3;
end


switch 表达式
	case 表达式1
		语句体1;
	case 表达式2
		语句体2;
	otherwise
		语句段n;
end

二维平面绘图

例:画正弦函数

x = 0:0.01:2*pi	% x从0取到2pi
y = sin(x)
figure	% 建立一个幕布
plot(x, y)	% 绘制图像

title('y = sin(x)')	% 给图像加标题
xlabel('x')	% x轴
ylabel('sin(x)') % y轴
xlim([0 2*pi])	% 图像尾恰靠在边缘
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5x).*sin(10*x);
figure
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot')	% 共用x轴
set(get(AX(1),'Ylabel'),'String','Slow Decay')	% AX(1)代表左侧y轴,AX(2)代表右侧y轴
set(get(AX(2),'Ylabel'),'String','Fast Decay')
xlabel('Time (\musee)')
title('Multiple Decay Rates')
set(H1,'LineStyle','--')	% 设置线型
set(H2,'LineStyle',':')

plotyy函数返回的值是一个大小为3的结构体,其中的第一个元素AX是一个大小为2的结构体(就好像集合里包含集合一样),这个AX里的两个元素分别是两个曲线的坐标系,(用AX(1)就可以取出其中的第一个元素,AX(2)类似),分别用程序中用get函数获得了两个坐标系中y轴的标签(即ylabel)的地址,这样就可以对y轴标签进行编辑了。set函数的第一个参数就是这个地址。第二个参数表示“我要设置这个ylabel的字符串”(所以参数是'String')。第三个参数表示“我设置的字符串是什么”。 而H1,H2,则是这个大小为3的结构体中的第二个和第三个元素。它们分别表示两条曲线本身。所以set函数的第一个参数就是H1或H2。第二个参数表示“我要设置这个H1或H2的线条的风格"(所以参数是LineStyle),第三个参数表示“我设置的线条风格是什么”。 而至于AX(1),AX(2),H1,H2是怎么用一个变量来表示整个坐标系,或者整个曲线的呢?我们平时的变量只能表示一个数或者一堆数的啊?那是因为AX(1),AX(2),H1,H2的类型既不是整数,也不是实数,也不是整数或实数数组,而是官方自己定义的一个复杂变量类型。AX(1),AX(2)的类型是axes,H1,H2的类型是line。整数和axes都是类型

图像参数

颜色

颜色 字符 颜色 字符
r m
绿 g c
b w
y k

线型

线型 符号 示例
实线 - ___________________________
虚线 -- ---------------
冒号线 : ..................
点画线 -. _ . _ . _ . _ .

数据标记点

三维立体绘图

t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)	% x,y,z
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on		% 加网格线
axis square		% 使整个图(连同坐标系)呈方体

标签:返回,rand,H2,基础,H1,矩阵,语法,MATLAB,AX
From: https://www.cnblogs.com/chasetsai/p/18351050

相关文章

  • C++入门基础知识(笔记):成员变量和成员函数分开存储,非静态成员变量,是属于类的对象上,空对
    在C++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上。1.空对象占用内存空间为:1个字节,代码演示:#include<iostream>usingnamespacestd;//成员变量和成员函数分开存储classPerson{};//这是一个空对象voidtest01(){ Personp;......
  • JavaSE基础知识分享(四)
    写在前面前面讲的是面向对象中的封装思想,下面让我们来看看继承这部分的内容!继承概述多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。通过extends关键字可以实现类与类的继承:class子类名extends父类名......
  • 常量的基础认知和相互转化
    常量:在java程序运行过程中,其值不能够发送改变的量分类:字面值常量:字符串常量:被双引号括起来的字符序列"java"字符常量:被单引号括起来的单个字符'a'整数常量:所有的整数100200-100小数常量:所有的小数1.233.14-1.23布......
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
    刷题记录*并查集理论基础107.寻找存在的路径*并查集理论基础讲解107.寻找存在的路径题目地址直接套模板。结点编号从1开始,因此定义father数组时需要n+1个空间,否则会越界。时间复杂度:O(......
  • 黑马Java零基础视频教程精华部分_15_基本查找/顺序查找、二分查找/折半查找、插值查找
    系列文章目录文章目录系列文章目录一、基本查找/顺序查找核心思想:从0索引开始挨个往后查找代码:练习:定义一个方法利用基本查找,查询某个元素在数组中的索引,数组包含重复数据。二、二分查找/折半查找核心思想:属于有序查找算法。用给定值先与中间结点比较,每次排除一半的......
  • C语言入门零基础:6、运算符
    一、运算符分类:        1、赋值运算符:=         2、算术运算符:+-*/%(取余取模)        3、关系运算符:> >= < <= ==!=        4、逻辑运算符:&& ||!        5、其他运算符:++--?: 复合 += -= ......
  • Java基础语法:变量与数据类型
    变量1.概念:变量是用来存储数据的命名容器并在程序的不同部分使用它。2.语法:数据类型变量名称=初始值;可以这样理解:**数据类型:**鱼缸**变量名称:**鱼的名字**变量的值:**鱼缸里装的鱼或数量数量数据类型基本数据类型-整型:1.byte:8位,有符号整数(-128到127)2.short:......
  • 【kali系列】Metasploit Framework (MSF) 从基础到进阶使用指南
    引言一、MetasploitFramework介绍1.1MSF概述1.2MSF主要组件二、MetasploitFramework基础安装与配置2.1KaliLinux中的MSF2.2非KaliLinux环境下的安装2.3更新与升级三、MetasploitFramework基础用法3.1启动MSF控制台......
  • 【matlab版】如何利用代码计算声音信号的声压级
    1、声压(SoundPressure)声压是声波传播过程中引起的介质(如空气、水等)中的压力变化。它是声波的基本物理量之一,用来描述声波在某一位置上的瞬时压力大小。声压的单位是帕斯卡(Pa),1Pa等于1牛顿每平方米(N/m²)。声压通常使用麦克风测量。麦克风可以将声压变化转换为电信号,从而......
  • java基础学习笔记1
    Java编程规范命名风格1.【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反例:_name/__name/$name/name_/name$/name__2.【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。说明:正确的英文拼写......