MATLAB基础知识回顾

目录

1.帮助命令

2.数据类型

3.元胞数组和结构体

4.矩阵操作

4.1 矩阵的定义与构造

4.2 矩阵的四则运算

4.3 矩阵的下标

5.程序结构

5.1 for循环结构

5.2 分支结构

7.基本绘图操作

7.1.二维平面绘图

6.2 三维立体绘图

7.图形的保存与导出

8.补充


语句后⾯加;的作⽤是:程序运⾏时不在命令⾏窗⼝显⽰改⾏的运算结果。

format compact:%输出行间距设置为紧凑模式

format loose:%恢复到默认的松散模式

需要注意的是,format 函数的设置只会影响当前 MATLAB 会话中的输出行间距,不会改变实际的数据或变量。此外,该设置对于图形和其他非命令行的输出可能没有影响。

1.帮助命令

 

 

例如,如果想使⽤某个与关键字 inverse 有关的函数,可以使⽤下⾯的代码进⾏查找:


2.数据类型

%%  独占一行的注释
%   普通注释

clear all	删除所有变量
clc	删除命令行窗口内容

变量命名规则:区分大小写;长度不超过63

10/3=3.3333     /是真除法 


abs('a')  %输出97  单引号表示字符
abs('ab') %输出97 98
char(97) %输出'a'
num2str(97) %输出'a'

length('adjkasnjfka') #输出的是字符串长度

A=[1 2 3;4 5 6;7 8 9]  %定义矩阵
B=A'    %转置
C = A(:) %竖向拉长

D = inv(A) %逆矩阵(必须时方阵才能求逆矩阵)
A * D (相当于A×A的逆)
在MATLAB中,可以使用inv函数或者det函数来判断一个矩阵是否可逆。
·inv函数用于计算矩阵的逆。如果一个矩阵是可逆的,inv函数将返回该矩阵的逆矩阵。如果矩阵不可逆(奇异矩阵),inv函数将引发一个异常。
·det函数用于计算矩阵的行列式。如果一个矩阵的行列式不等于零,则说明该矩阵是可逆的;如果行列式等于零,则说明该矩阵是不可逆的。

E = zeros(10,5,3) 创建一个10行5列3维的全0矩阵
E(:,:,1) = rand(10,5)  %rand生成均匀分布的伪随机数。分布在(0~1)之间
rand(m,n,‘double’)生成指定精度的均匀分布的伪随机数,参数还可以是’single’

rand():生成[0,1)的小数

rand(m):生成m X m的方阵,随机小数填充

rand(m,n):生成m X n的矩阵,随机小数填充

rand(m,n,p):生成m X n X p的矩阵,随机小数填充

a+(b-a)*rand():[b,a]区间小数

‘double’和'single':指定数据类型,放在rand的最后一个参数位置

randi是生成的整数,rand是[0,1]的小数。

randi(iMax):生成[0,iMax]的整数

randi(iMax,m):生成m X m的方阵,数值区间[0,iMax]

randi(iMax,m,n):生成m X n的矩阵,数值区间[0,iMax]

randi(iMax,m,n,p,...):后面的全部都是维度m X n X p X ...

randi([iMin,iMax],m,n):生成m X n的矩阵,数值区间[iMin,iMax]

randn(m):m X m

randn(m,n):m X n

randn(m,n,p):m X n X p

·只有randi能够指定[iMin,iMax],rand、randn都不可以。

·randi生成的是整数,rand、randn生成的是小数。

·randn只能指定维度。

3.元胞数组和结构体

元胞数组:是MATLAB中特有的一种数据类型,是数组的一种,其内部元素可以是属于不同的布局类型,概念理解上,可以认为它和C语言里面的结构体、C++里面的对象很类似。元胞数组是MATLAB中的特色数据类型,它不同于其它数据类型(如字符型,字符数组或者字符串,以及一般的算数数据和数组)。它特有的存取数据方法决定了它的特点,它有给人一种查询信息的感觉,可以逐渐追踪一直到所有的变量全部翻译成基本数据信息。它的class函数输出就是cell(细胞)

元胞数组
A = cell(1,6)  %定义
A{2} = eye(3) %2021版本前的matlab下标从1开始
A{5} = magic(5)  %魔方:该矩阵无论横、竖还是斜三个方向上的数的和总是相同的
B = A{5}

结构体 

注意定义里面是逗号隔开,访问时候用点。

>> books=struct('name',{
    
    {'Machine Learning','Data Mining'}},'price',[30,40])
books = 
  包含以下字段的 struct:
     name: {'Machine Learning'  'Data Mining'}
     price: [30 40]

>> books.name
ans =
  1×2 cell 数组
    'Machine Learning'    'Data Mining'

>> books.price
ans =
    30    40

>> books.name(1)
ans =
  cell
    'Machine Learning'

>> books.name{1}
ans =
Machine Learning

4.矩阵操作

4.1 矩阵的定义与构造

>> A=[1,2,3,4,5,6,7,8,9]%直接定义矩阵
A =
     1     2     3     4     5     6     7     8     9

>> B=1:2:9 %第二个参数为步长,不可缺省,[1,9]包含最后一个数值
B =
     1     3     5     7     9

>> C = repmat(B,3,2) %重复执行3行2列
C =
     1     3     5     7     9     1     3     5     7     9
     1     3     5     7     9     1     3     5     7     9
     1     3     5     7     9     1     3     5     7     9

>> D = ones(2,4) %生成一个2行4列的全1矩阵
D =
     1     1     1     1
     1     1     1     1

4.2 矩阵的四则运算

>> A = [1 2 3 4; 5 6 7 8]
A =
     1     2     3     4
     5     6     7     8
>> B = [1 1 2 2; 2 2 1 1]
B =
     1     1     2     2
     2     2     1     1
>> C=A+B  %对应位置相加
C =
     2     3     5     6
     7     8     8     9
>> C=A*B'  %'是转置符号
C =
    17    13
    41    37
>> C=A'*B
C =
    11    11     7     7
    14    14    10    10
    17    17    13    13
    20    20    16    16


>> A
A =
     1     2     3     4
     5     6     7     8
>> B
B =
     1     1     2     2
     2     2     1     1
>> A.*B %对应位置相乘
ans =
     1     2     6     8
    10    12     7     8
>> A./B %对应位置相除
ans =
    1.0000    2.0000    1.5000    2.0000
    2.5000    3.0000    7.0000    8.0000

>> G = A / B %相当于A*B的逆 G*B = A  G*B*pinv(B) = A*pinv(B)  G = A*pinv(B),相当于A乘B
G =
    1.8333   -0.1667
    3.1667    1.1667
>> A * inv(B)
错误使用 inv
矩阵必须为方阵。 
>> A * pinv(B)  %pinv可以不是方阵
ans =
    1.8333   -0.1667
    3.1667    1.1667

4.3 矩阵的下标

>> A=magic(5)
A =
    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9
>> A(2,3) %矩阵坐标从1开始数,访问第二行第二列元素
ans =
     7
>> A(2,:) %访问第二行所有元素
ans =
    23     5     7    14    16
>> A(:,3) %访问第三列所有元素
ans =
     1
     7
    13
    19
    25
>> find(A>20) %返回的是大于20的元素的下标,竖着数
ans =
     2
     6
    15
    19
    23
>> A(6)
ans =
    24

5.程序结构

5.1 for循环结构

>> sum=0;
>> for i=1:5
sum=sum+i*i;
end
>> sum
sum =
    55

sum=0;
for i=1:5
    cur=1;
    for j=1:i
        cur=cur*j;
    end
    sum=sum+cur;
end
disp(sum); %153

 

%打印九九乘法表
for i=1:9
    for j=1:i
        a(i,j)=i.*j;
    end
end
disp(a);

>> test01
     1     0     0     0     0     0     0     0     0
     2     4     0     0     0     0     0     0     0
     3     6     9     0     0     0     0     0     0
     4     8    12    16     0     0     0     0     0
     5    10    15    20    25     0     0     0     0
     6    12    18    24    30    36     0     0     0
     7    14    21    28    35    42    49     0     0
     8    16    24    32    40    48    56    64     0
     9    18    27    36    45    54    63    72    81

5.2 分支结构

7.基本绘图操作

7.1.二维平面绘图

x=0:0.01:2*pi;
y=sin(x);
figure;  %建立一个幕布
plot(x,y);
title('y=sin(x)');
xlabel('x');
ylabel('y');
xlim([0 2*pi]); %设置x坐标值的范围

在这里插入图片描述

x=0:0.01:20;
y1=200*exp(-0.05*x).*sin(x);
y2=0.8*exp(-0.5*x).*sin(10*x);
figure;
[AX,H1,H2]=plotyy(x,y1,x,y2,'plot');%共用一个x的坐标系,在y上有两个不同的取值
%设置相应的标签
set(get(AX(1),'Ylabel'),'String','Slow Decay');
set(get(AX(2),'Ylabel'),'String','Fast Decay');
xlabel('Time(\musec)');
title('Multiple Decay Rates');
set(H1,'LineStyle','--','Color','b');
set(H2,'LineStyle',':','Color','k');

6.2 三维立体绘图

t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t);
xlabel('sin(t)');
ylabel('cos(t)');
zlabel('t');
%hold on 
%hold off %不保留当前操作
grid on;%把图片绘制出来,加一些网格线
axis square %使整个图(连同坐标系)呈方块

hold on是当前轴及图像保持而不被刷新,准备接受此后将绘制的图形,多图共存,即启动图形保持功能,当前坐标轴和图形都将保持,从此绘制的图形都将添加在这个图形的基础上,并自动调整坐标轴的范围。

hold off使当前轴及图像不再具备被刷新的性质,新图出现时,取消原图。即关闭图形保持功能。

hold on 和hold off,是相对使用的。

7.图形的保存与导出

如果直接用截图的方式截取matlab生成的图像,会影响图像的清晰度。因此我们建议:可以用如下方法保存与导出图形。

1)如图在这里插入图片描述

在这里插入图片描述

2)编辑→复制选项

可调节相应元素

在这里插入图片描述

3)编辑→图窗属性

在这里插入图片描述

4)文件→导出设置

在这里插入图片描述

通过调节宽度、高度等像素值属性,可以让图片即使很小,文字依然清晰。

Matlab基础的部分到这就结束了,下面作一点补充~

8.补充

[x,y,z] = peaks(30); %peaks命令用于产生双峰函数或者是用双峰函数绘图
mesh(x,y,z)
grid

>> peaks
z =  3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... 
   - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... 
   - 1/3*exp(-(x+1).^2 - y.^2)  

猜你喜欢

转载自blog.csdn.net/m0_58086930/article/details/131939369