MATLAB入门

本文介绍了MATLAB的基础知识,包括矩阵和数组的操作、随机数生成、工作区变量管理、文本和字符处理、函数调用方法以及二维和三维图形的绘制。此外,还涉及到了循环和条件语句的使用以及获取帮助和文档的途径。
摘要由CSDN通过智能技术生成

坚持不一定成功,但放弃一定很轻松

基础知识

  1. 基础
  • clear all 清除workspace忠的所有变量
  • clc 清除command window中所有的命令
  • 变量名区分大小写,不能超过64位
  • length(str) 输出字符串长度
  • % :注释
  • c = [ 3 + 4i, 4 + 3j ; -i ,10j ] 要表示虚数的虚部,用 i或j
  1. 随机数 rand、randi、randn
  • rand: 生成均匀分布的伪随机数,分布在(0-1)之间
    • rand(m,n) :生成 m 行 n 列的均匀分布的伪随机数
    • rand(m,n,‘double’) :生成指定精度的均匀分布的伪随机数,参数还可以是‘single’
    • randn(RandStream,m,n) :利用指定的RandStream随机种子生成伪随机数
  • randn: 生成标准正太分布的伪随机数(均值为0,方差为1)
    • 主要语法和rand一样
  • randi: 生成均匀分布的伪随机数
    • randi(iMax): 在开区间(0,iMax)生成均匀分布的伪随机数
    • randi(iMax,m,n): 在区间(0,iMax)生成m x n型随机矩阵
  1. format 函数:控制显示的值的数值格式

    • format long : 显示长浮点数

    • format short : 显示更短格式

  2. 隐藏输出

  • 键入语句后直接按Return或Enter,MATLAB会在屏幕上自动显示结果。

  • 语句后面加分号(; ), MATLAB会执行计算,但不会显示任何输出。当生成大型矩阵时此功能尤其有用

  • 输入长语句

    • 如果语句无法容纳在一行中,使用省略号(三个句点)…后跟Return或Enter以指示该语句在下一行继续。

      s = 1 -1/2 + 1/3 -1/4 +1/5 -1/6 + 1/7 ...
      	- 1/8 + 1/9;
      
    • =、+ 和 - 符号周围的空白是可选的,可提高可读性

矩阵和数组

  1. 矩阵和数组运算符
  • 矩阵不用于线性代数的运算,则为二维数值数组,数组的算术运算按元素执行

    矩阵运算符说明数组运算符说明
    +加法+加法
    -减法-减法
    *乘法.*逐元素乘法
    /除法./逐元素除法
    \左除.\逐元素左除
    ^.^逐元素幂
    复共轭转置.’非共轭数组转置
    ()指定计算顺序
  1. 数组、矩阵、幻方矩阵
  • a + 10; 矩阵a中的每个元素都加10
  • sin(a); 矩阵a中的每个元素都取正弦
  • a.^3; 矩阵a中的每个元素取立方值
  • A = [1 2 3; 4 5 6;7 8 9] 得到一个3行3列的矩阵A
  • B = A' A转置后赋值给B
    • 撇号运算符(A’)执行复共轭转置,围绕主对角线翻转矩阵,并且还会更改矩阵的任何复数元素的虚部符号
    • 点撇号运算符(.A’)装置矩阵,不会影响复数元素的符号
    • 对包含所有元素为实数的矩阵,两个运算符返回结果相同
  • C = A(:) 得到9行1列的矩阵C,C=[1; 2; 3; 4; 5; 6; 7; 8; 9]
  • D = inv(A) 矩阵求逆
  • E = zeros(10,5,3) 创建一个10行5列3层的全零矩阵
  • F = ones(10,5) 创建一个10行5列的全1矩阵
  • G = eye(3) 生成一个3x3d ,对角线位1的矩阵
  • H = pascel(n) 对称矩阵
  • I = inv(a) 逆矩阵,方阵才有逆矩阵
  • diag(A) 矩阵对角线元素的提取和创建对角阵
    • X = diag(v,k) v是含有n个元素的向量,k表示第几条对角线
    • v = diag(X, k) v由矩阵X的第k个对角线的元素形成

X =diag([1 2 3], 1 )
ans = 
	0 1 0 0
	0 0 2 0
	0 0 0 3
	0 0 0 0

X =[1 0 3; 2 3 1;4 5 3];
diag(v,1)
ans = 
	0
	1
  • fliplr(A) 将数组从左向右翻转
  • sum(A); 得到A的列总和的行向量
  • sum(A')' 得到A的行总和的列向量
  • sum(A,2) 在sum函数中使用维度参数,避免使用双重转置的方法,得到行总和的列向量
  • sum(diag(A)) 得到主对角线上元素的总和
  1. 串联
a = [1 2 3; 4 5 6; 7 8 9]     a为3*3的矩阵
A = [a,a];                   A为3*6的矩阵 
A = [a;  a];                 A为6*3的矩阵
  1. 幻方矩阵
  • B = magic(n) 返回由1到n^2的整数构成,且总行数和总列数相等的 n x n幻方矩阵
  • 幻方矩阵的特点:每个元素都是正整数,每一行、每一列、每一条对角线上的元素之和都等于同一个正整数

数组索引

  • A 为4行4列的矩阵

  • A(4, 2); 取出矩阵A的第4 行第2 列的元素,注意:索引从1开始

  • A(8); 取出第8 个元素,注意:按顺序向下遍历每一列

  • test = A(4,5) ; 在赋值语句右侧引用数组外部元素(超出矩阵原大小),MATLAB会引发错误
    - A (4,5) =17 在赋值语句左侧指定当前维外部的元素,数组大小会增大以便容纳新元素

  • 要引用多个数组元素,使用冒号(:)运算符,格式 start:end指定范围

    • A( 1:3, 2) 列出A前三行的第二列中的元素
    • A(3, :) 列出第三行中的所有列
    • B = A(:,[1 3 2 4]) 将矩阵A的第2、3列调换后赋值给B
  • 创建等间距向量值,格式 start:step:end,若省内step,默认步长为1

    • B = 0,10,100 0到100间(包括0和100),每隔10取出一位数
  • 构建表

    %构建一个平方和2次幂表
    n = (0:4)'
    pows = [n n.^2 2.^n]
    
    pows = 
    	0	0	1
    	1	1	2
    	2	4	4
    	3	9	8
    	4	16	16
    
  • 一些特殊函数提供了有用的常量值

常量值说明常量值说明
pi3.1415926realmin最小浮点数
i虚数单位realmax最大浮点数
j与i 相同Inf无穷
eps浮点相对精度NaN非数字

工作区变量

  • 工作区包含MATLAB中创建或从数据文件或其他程序导入的变量
  • 使用 whos 可以查看工作区的内容
  • 退出MATLAB后,工作区变量不会保留。使用save命令保存数据以供将来使用
    • save myfile.mat
    • 通过保存,系统会使用.mat扩张名将工作区保存在当前工作文件夹中一个名为MAT文件的压缩文件中
  • 使用 load 将MAT文件中的数据还原到工作区
    • load myfile.mat

文本和字符

  1. 字符串数组中的文本
  • 当处理文本时,将字符系列括在双引号
    • t = "Hello, world";
  • 如果文本包含双引号,在定义中要使用双引号
    • q = "Something ""quoted"" and somethong else."
  • 与所有MATLAB变量一样,t 和 q 为数组,它们的类和数据类型时string
  • 将文本添加到字符串的末尾,使用运算符“+”
    • tempText = “Temperature is ”+ 25 + “C”
  • 与数值数组相同,字符串数组可以有多个元素,使用 strlength 函数中每个字符串的长度
    • A = [ "a", "bb"; "ccc","dddd" ]
    • strlength(A); ans = [ 1 2; 3 4 ]
  1. 字符数组中的数据
  • 字符数组并不对应到文本,括在单引号
    • seq = ‘ABCDEFG';
    • seq(4) ans = 'D'
    • seq2 = [seq 'HIJKLMN' ] seq2 = 'ABCDEFGHIJKLMN'

调用函数

  • 调用函数,例如max,将输入参数括在圆括号中:max(A)
  • 存在多个输入参数,用逗号分隔:max(A,B)
  • 将函数赋值给变量,返回该函数的输出:maxA = max(A)
  • 存在多个输出参数,将其括在方括号中:[maxA, location] = max(A)
  • 将任何字符输入括在单括号中:disp('hello world')
  • 调用不需要任何输入输出的函数,只需键入函数名称,如清空命令行窗口:clc

二维图和三维图

  1. 线图
  • 使用plot 创建二维线图

    %绘制从0到2Π的正弦函数值
    x = 0:pi/100:2*pi;
    y = sin(x);
    plot(x,y);
    
    xlabel('x')       %x坐标标签
    ylabel('sin(x)')  %y坐标标签
    title('Plot of the Sine Function')   %标题
    

在这里插入图片描述

% plot 函数添加第三个输入函数,设置线条特性,线型、标记、颜色
plot(x,y,'r--')          %线条为红色虚线
线型说明标记说明
- (默认)实线none(默认)不显示
虚线o圆圈
点线+加号
-.点划线*星号
.
x叉号
颜色说明-水平条
r红色|垂直线条
g绿色s方形
b蓝色d菱形
w白色^上三角
k黑色v下三角
y黄色>右三角
m品红<左三角
c青蓝p五角星
h六角星
  • 默认情况下,每次调用绘图函数、重置坐标区及其他元素以准备新绘图时,MATLAB都会清空图窗
  • 要将绘图添加到现有图窗,使用hold on
  • 在使用hold off 或关闭窗口之前,当前图窗窗口中会显示所有绘图
%两个图像在同一图窗显示
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)

hold on

y2 = cos(x)
plot(x,y2,':')
legend('sin','cos')    %将sin、cos标注图中

hold off
%其他方式
1.plot(X1,Y1,...,Xn,Yn)

2.plot(X1,Y1,LineSpex1...,Xn,Yn,LineSpecn)

3.plot(X1,Y1,X2,Y2,LineSpace2,X3,Y3)
  1. 三维视图
  • plot3(x,y,z); 三维曲线图
%使用sin和cos组成三维的螺旋曲线
t = 0:pi/50:10*pi;
st = sin(t);
ct = cos(t);

figure
plot3(st,ct,t,'b^-');
xlabel('sin(t)');
ylabel('cos(t)');
zlabel('t');

在这里插入图片描述

  • mesh(x,y,x); 三维网格图
%sinc函数
x=-8:.5:8;
y=x;
[X,Y] = meshgrid(x,y);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;

figure
mesh(X,Y,Z)%直接mesh(Z)也可以

%subplot(211);meshc(Z);%绘制等高线
%subplot(212);meshz(Z);%绘制界线

在这里插入图片描述

  • surf(x,y,z); 三维曲面图
x=-5:5;
y=x;
[X,Y]=meshgrid(x,y);
Z=X.^2+Y.^2;

figure;
surf(X,Y,Z);
colormap cool%调色为cool

在这里插入图片描述

  1. 多个绘图
  • 使用tiledlayout或subplot在同一个窗口的不同部分显示多个 绘图

  • subplot

    • subplot(m,n,p); 将当前图形划分为m*n网格,并在p指定的位置创建坐标轴
    • subplot(m,n,p,‘replace’); 删除位置p处的现有坐标轴并创建新坐标轴
     subplot(2,1,1);
     x = linspace(0,10);
     y1 = sin(x);
     plot(x,y1)
     title('Subplot 1: sin(x)')
     
     subplot(2,1,2);
     y1 = sin(5*x);
     plot(x,y2)
     title('Subplot 2: sin(5x)')
    

在这里插入图片描述

编程和脚本

  1. 脚本
  • edit mysphere; edit 命令创建脚本
  • 该命令会打开一个名为mysphere.m的空白文本。输入代码,以创建一个单位球,半径加倍并绘制结果图
% 创建并绘制一个半径为r的球体.
[x,y,z] = sphere;       % 创建一个单位球.
r = 2;
surf(x*r,y*r,z*r)       % 调整每个维度并绘图.
axis equal              % 对每个轴使用相同的比例. 
 
% Find the surface area and volume.
A = 4*pi*r^2;           %计算球的表面积
V = (4/3)*pi*r^3;       %计算球的体积
  • mysphere 将文件保存到当前文件夹
  • 要运行脚本,可在命令行中键入脚本名称,或点击编辑器的运行按钮
  1. 循环及条件语句
N = 100;
f(1) = 1;
f(2) = 1;

for n = 3:N
    f(n) = f(n-1) + f(n-2);
end
f(1:10)
num = randi(100)
if num < 34
   sz = 'low'
elseif num < 67
   sz = 'medium'
else
   sz = 'high'
end

帮助和文档

  • doc mean 在单独的窗口打开函数文档
  • mean( 命令行窗口中会显示相应函数的提示
  • help mean 可在命令行窗口查康相应函数的简单文档

怕什么真理无穷,进一寸有一寸的精彩

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

懵逼树下的懵逼果

谢谢谢谢谢,好人一生平安

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

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

打赏作者

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

抵扣说明:

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

余额充值