Advertisement

【学习笔记】Get Started with MATLAB-Chapter01

阅读量:
复制代码
    这是我在学习MATLAB的官方手册时做的笔记,手册是英文版可能有些术语啊、表达啊我只是按照自己的理解译的,不是很专业,分享给同样奋战中的小白参考,也希望各位大神多多指教哇哈哈~

基本结构

界面

clc清空所有命令

clc清空所有命令

clc清空所有命令

清除命令行窗口中的所有指令

变量

在未使用分号的情况下运行代码时不会出现错误,在使用分号的情况下则会推迟命令窗口中输出的显示(suppression de l'affichage de la sortie dans la fenêtre de commandes)

复制代码
    >> a=1
    
    a =
    
     1
    
    >> b=cos(a)
    
    b =
    
    0.5403
    
    >> sin(a)   %不指定结果赋值给谁就会自动赋给ans,后面会被覆盖。
    
    ans =
    
    0.8415
复制代码
    whos   %查看所有变量属性
复制代码
    save myfile.mat   %save 文件名,将所有变量存储下来以备下次用,否则关掉程序就都清空了。可以在界面左侧current folder里看到。
复制代码
    load myfile.mat   %load 文件名,打开保存的变量

矩阵

创建矩阵

基本方法:用方括号表示矩阵内元素,逗号或空格分列,分号分行

复制代码
    >> a=[1 2 3;4 5 6]
    
    a =
    
     1     2     3
     4     5     6

函数方法:

复制代码
    >> z=zeros(5,1)   %MATLAB里都是前面的表示行,后面的表示列
    
    z =
    
     0
     0
     0
     0
     0

矩阵运算

对矩阵进行的运算会作用到矩阵内的每个元素上

复制代码
    >> a+10
    
    ans =
    
    11    12    13
    14    15    16
复制代码
    >> sin(a)
    
    ans =
    
    0.8415    0.9093    0.1411
       -0.7568   -0.9589   -0.2794

矩阵的转置

复制代码
    >> a'
    
    ans =
    
     1     4
     2     5
     3     6

矩阵的逆

复制代码
    >> a=[a;[8 7 9]]    %因为只有方阵才可以计算逆矩阵,因此在a下面加上一行
    
    a =
    
     1     2     3
     4     5     6
     8     7     9
    >> inv(a)           %求逆
    
    ans =
    
       -0.3333   -0.3333    0.3333
       -1.3333    1.6667   -0.6667
    1.3333   -1.0000    0.3333

矩阵乘法

对比下面两段即可

复制代码
    >> p=a*inv(a)   %线性代数里面的矩阵乘法
    
    p =
    
    1.0000         0    0.0000
       -0.0000    1.0000    0.0000
       -0.0000         0    1.0000
复制代码
    >> p=a.*a               %对应元素分别相乘
    
    p =
    
     1     4     9
    16    25    36
    64    49    81

再举两个栗子

复制代码
    >> a.^3                 %等效于a.*a.*a
    
    ans =
    
     1     8    27
    64   125   216
       512   343   729
    >> a^3                  %等效于a*a*a
    
    ans =
    
         501         525         675
        1140        1191        1530
        1740        1815        2331

矩阵指针

A(i,j)的形式找到A矩阵中的第i行,第j列元素

复制代码
    >> A=magic(4)
    
    A =
    
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1
    
    >> A(4,2)       %第4行第2个
    
    ans =
    
    14

同样可以采用A(k)形式确定矩阵中从起始位置A(1,1)开始依次按列查找(纵向查找),最终定位到第k个元素的位置。

复制代码
    >> A(9)
    
    ans =
    
     3

若索引超出矩阵边界(例如在4×4矩阵中查找元素A(4,5))会导致错误。然而,在超出范围的位置进行赋值操作,则该矩阵会自动扩展至包含相应元素。

复制代码
    >> A(5,5)=99
    
    A =
    
    16     2     3    13     0
     5    11    10     8     0
     9     7     6    12     0
     4    14    15     1     0
     0     0     0     0    99

此外

复制代码
    >> A(2:3,4:5)  %第2~3行的第4~5列
    
    ans =
    
     8     0
    12     0
    
    >> A(2,:)    %第2行所有列
    
    ans =
    
     5    11    10     8     0

字符

字符永远放在单引号里,如果字符包含单引号,就用两个单引号代替

复制代码
    >> Text1='Hello World'    %经典中的经典,学到这句话感觉才正式开始
    
    Text1 =
    
    Hello World

在一个矩阵中存储的数据具有相同属性;因此,在尝试将数值与字符串存放在同一矩阵时,请注意使用num2str函数将其转换为字符串形式

复制代码
    >>  Text=['I have ',num2str(12),' apples.']  %注意留好空格
    
    Text =
    
    I have 12 apples.

函数

函数名字(输入参数),具体规则用到时候具体查,这里只举个栗子。

复制代码
    >> A=[1 5 9];
    >> B=[2 4 7];
    >> max(A,B)     %同一位置的两个数比较,且只能比两个
    
    ans =
    
     2     5     9

制图

绘制2-D图

步骤:
1. 给定定义域:x=start:step:end
2. 给出函数: y=f(x)
3. 绘制图形:plot()

复制代码
    >> x=0:pi/100:2*pi;
    >> y=sin(x);
    >> plot(x,y,'r--')
    >> xlabel('X');
    >> ylabel('Y');
    >> title('Plot of the Sine Function')
复制代码
    >> x=0:pi/100:2*pi;
    >> y=sin(x);
    >> plot(x,y)
    >> hold on                %hold住一个图像,再叠加另一个图像
    >> y2=cos(x);
    >> plot(x,y2,'r--')
    >> legend('sin','cos')    %添加图例

绘制3-D图

步骤:

  1. 生成网格区域:meshgrid() 函数
  2. 给出函数: z=f(x,y)
  3. 绘制图形:surf() 或mesh()

例如

复制代码
    >> a=[1 2];
    >> b=[3 4 5];
    >> [A,B]=meshgrid(a,b) %a,b均为数组
    
    A =
    
     1     2
     1     2
     1     2
    
    
    B =
    
     3     3
     4     4
     5     5
复制代码
    >> size(a)
    
    ans =
    
     1     2
    
    >> size(b)
    
    ans =
    
     1     3

在本例中, 变量a被定义为一个行向量, 包含两个元素; 变量b则是一个包含三个元素的一维行向量. 当调用meshgrid函数时, 会生成两个二维网格矩阵. 网格矩阵A的第一维大小等于变量b的行数, 即3; 网格矩阵B则由变量a的所有元素按列方向扩展形成. 这种处理方式的主要目的是为了确保生成的两个网格矩阵具有相同的维度和大小, 即均为3×2矩阵. 其中,A中的每个元素对应于坐标点(A_ij, B_ij), 用于在平面上表示该坐标位置.

实例演示

复制代码
    >> t=0:pi/10:2*pi;
    >> [X,Y,Z]=cylinder(4*cos(t));         %cylinder(r)函数表示“输出半径为r高度为1的圆柱”
    %在一张图上显示几张小图的函数——subplot(m,n,p)其中前两个参数 m,n是将你的图分成 m*n个栅格,p表示这张图占第几个位置(位置编号是一行一行从左到右数的)%
    >> subplot(2,2,1);mesh(X);title('X');  %mesh()用于生成网格图
    >> subplot(2,2,2);mesh(Y);title('Y');
    >> subplot(2,2,3);mesh(Z);title('Z');
    >> subplot(2,2,4);surf(X,Y,Z);title('X,Y,Z');%surf()用于生成有颜色填充的图
运行结果

脚本

编辑脚本:

复制代码
     edit plotrand %自动创建

在编辑器里写代码:

复制代码
    % generate random data from a uniform distribution
    % and calculate the mean.plot the data and the mean
    n=50;                
    r=rand(n,1);         %产生50行的列向量
    
    %绘制随机数的图
    plot(r,'r*')
    m=mean(r);
    hold on
    %画一条从(0,m)到(n,m)的线
    plot([0,n],[m,m])    
    hold off
    title('mean of random uniform data')

在命令窗口输入:(或者直接点运行按钮)

复制代码
    plotrand

保存,运行得到结果如下

脚本实例结果

循环&条件语句

复制代码
    %计算5组随机样本的样本均值和总体均值
    nsamples=5;%随机样本组数  
    npoints=50;%随机数数量
    
    for k=1:nsamples
    currentData=rand(npoints,1);     %每组样本内生成50*1随机数组
    sampleMean(k)=mean(currentData); %对随机数组求均值存储在另外的数组里
    end
    overallMean=mean(sampleMean)    %对存储有各组均值的数组求均值
循环实例运行结果

改进:目前该函数仅能展示最终输出。希望进一步优化该功能,并使程序能够详细记录每一步骤的执行情况。建议将循环体结构进行如下调整:

复制代码
    for k=1:nsamples
    interationString=['Interation #',int2str(k)];
    sampleMeanNum=['sampleMean=',num2str(sampleMean(k))]
    disp(interationString)
    disp(sampleMeanNum)              %disp()函数只能单参数输入
    currentData=rand(npoints,1);     %每个样本组内生成50*1随机数组
    sampleMean(k)=mean(currentData); %对随机数组求均值存储在另外的数组里
    end
循环算例运行结果

条件语句

复制代码
    %当数值不同时输出不同的说明文字
    if overallMean<.49
    disp('mean is less than expected')
    elseif overallMean>.51
    disp('mean is greater than expected')
    else
    disp('mean is within the expected range')
    end
条件语句运行结果

帮助

复制代码
    >> doc mean    %个人更喜欢doc模式,更美观,还有实例讲解
    >> help mean

全部评论 (0)

还没有任何评论哟~