MATLAB 基础知识梳理

本文详细介绍MATLAB的基础操作,包括变量定义、矩阵操作、结构化编程及自定义函数的使用。涵盖帮助命令、数学函数、矩阵索引、等差级数、矩阵乘法、常用矩阵函数等内容,同时讲解了条件语句、循环结构、错误处理及编程技巧,适合初学者快速掌握MATLAB编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、开头的建议

  • 1、学会使用help()

  • 2、sqrt(4) = 根号4,ln =log ,pi = 圆周率

  • 3、MATLANB的变量不需要提前定义

  • who,查找有哪些变量

  • whos,有哪些变量,并且变量的具体大小是多少

  • iskeyword,列出关键字,注意避开关键字

  • 4、Format,展示变量

  • 5、‘>>’,表示调出历史记录
    ‘;’,表示不显示结果

>> a = 10

a =

    10

>> a =10;
>> 

二、矩阵

  • 1、索引,indexing,从上到下,从左到右,从1开始
  • 2、改变矩阵的值,如A(5)=13,改变了第五个元素的值
  • 3、等差级数,A=[1:100]表示等差为1,范围1~100,B=[1:2:99],等差为2
  • 4、删除行列 A(3,:) = []
  • 5、增广矩阵,直接拼接
  • 6、矩阵乘AB,矩阵对应位置乘 ‘.
  • 7、常用的matrix function
  • max(A),每列的最大值
  • sort(A),对整个矩阵的元素进行排序
>> A =[1 2 3;4 5 6;7 8 9]  //生成矩阵A

A =

     1     2     3
     4     5     6
     7     8     9

>> A(3)  //索引第3个位置的值

ans =

     7

>> A(5)=13   //将第5个数换成13

A =

     1     2     3
     4    13     6
     7     8     9

>> A=[1:10]

A =

     1     2     3     4     5     6     7     8     9    10

>> B=[1:2:9]

B =

     1     3     5     7     9

>> c=[1 2 3;4 5 6;7 8 9]

c =

     1     2     3
     4     5     6
     7     8     9

>> c(3,:)=[] //删除第三行整行

c =

     1     2     3
     4     5     6

>> d=[1 2 3;11 12 13]

d =

     1     2     3
    11    12    13

>> [c,d]   //c与d的增广矩阵1

ans =

     1     2     3     1     2     3
     4     5     6    11    12    13

>> [c;d]    //c与d的增广矩阵2

ans =

     1     2     3
     4     5     6
     1     2     3
    11    12    13

>> e =[2;3]

e =

     2
     3

>> c.*d    //矩阵c与d对应位置相乘

ans =

     1     4     9
    44    60    78

>> max(c)   //矩阵c每一列的最大值

ans =

     4     5     6

>> sort(c)  //对整个c排序

ans =

     1     2     3
     4     5     6

>> 

三、结构化程序和自定义函数

1、快捷方式

  • %,作为注释
  • %%,将代码分区块
  • debug设置中断点
  • 右键“缩排”
    在这里插入图片描述

2、结构体运算前要把旧的数据先clear ,防止出错

在这里插入图片描述

  • if switch
  • while(用break结束)
a = 10;
if rem(a, 2) == 0 
    disp('a is even') 
else
    disp('a is odd')
end

运行:
a is even
switch input_num 
case -1 
		disp('negative 1'); 
case 0 
		disp('zero'); 
case 1 
		disp('positive 1');
otherwise 
 		disp('other value'); 
end
n = 1; 
while prod(1:n) < 1e100 
    n = n + 1; 
end
for n=1:10 
    a(n)=2^n; 
end
disp(a)
x = 2;
k = 0; 
error = inf; 
error_threshold = 1e-32; 
while error > error_threshold 
    if k > 100 
        break 
    end
    x = x - sin(x)/cos(x); 
    error = abs(x - pi); 
    k = k + 1; 
end

3、pre-allocation,一次宣告空间,可以节约空间

利用tic时间开始、toc时间结束来计时

tic 
for ii = 1:2000 
    for jj = 1:2000 
        A(ii,jj) = ii + jj; 
    end
end
toc

运行:
时间已过 0.057937 秒。

比较
tic 
A = zeros(2000, 2000); 
for ii = 1:size(A,1) 
    for jj = 1:size(A,2)
        A(ii,jj) = ii + jj; 
    end
end
toc

运行:
时间已过 0.139545 秒。

4、编程技巧

  • close all,删除所有变量
  • clear all,关闭所有图
  • … 表示换行号
A = [1 2 3 4 5 6; ...
    6 5 4 3 2 1]
运行:

A =

     1     2     3     4     5     6
     6     5     4     3     2     1
  • control+ c,跳出指令执行

5、function

在这里插入图片描述

  • edit(which(‘mean.m’))找function文件
  • 呼叫function调用 mean()
  • nargin 表示input的个数
  • nargout 表示output的个数
  • varargin,表示input的长度
  • varaagout,表示output的长度
    在这里插入图片描述
function [volume]=pillar(Do,Di,height) 
if nargin==2, 
    height=1;
end
volume=abs(Do.^2-Di.^2).*height*pi/4;

MATLAB变量: string, structure, cell

在这里插入图片描述
在这里插入图片描述


s1 = 'h' 
whos 
uint16(s1)

运行;
ans =

  uint16

   104

一、字符串

s1 = 'Example';
s2 = 'String';
s3 = [s1 s2]; 
s4 = [s1; s2];

运行;
s1 =
    'Example'
s2 =
    'String'
s3 =
    'ExampleString'
    
错误使用 vertcat
串联的矩阵的维度不一致。
出错 
s4 = [s1;s2]

二、结构体 structure

在这里插入图片描述
1、当结构体里有多个对象时的索引

student(2).name = 'Ann Lane'; 
student(2).id = 'aln4@sfu.ca'; 
student(2).number = 301078853; 
student(2).grade = [95 100 90; 95 82 97; 100 85 100];

2、功能函数
在这里插入图片描述

fieldnames(student) 
rmfield(student,'id')

三、、cell,array不同类型数据的矩阵

1、用大括号宣告
在这里插入图片描述
2、查看内容

  • A{1,1} = 内容
  • A(1,1)= pointer
  • A{1,1}(1,1) 查看{1,1}内容矩阵里的(1,1)位置

3、function
在这里插入图片描述
4、多维数组 cell(row,column,layer)

cat()将矩阵在不同方向拼起来

A=[1 2;3 4]
B=[5 6;7 8]
C1=cat(1,A,B)
C2=cat(2,A,B) 
C3=cat(3,A,B)

运行:
A =
     1     2
     3     4

B =
     5     6
     7     8

C1 =
     1     2
     3     4
     5     6
     7     8


C2 =
     1     2     5     6
     3     4     7     8

C3(:,:,1) =
     1     2
     3     4

C3(:,:,2) =
     5     6
     7     8

reshape()改变矩阵形状

A = {'James Bond', [1 2;3 4;5 6]; pi, magic(5)} 
C = reshape(A,1,4)

运行:
A =
  2×2 cell 数组
    'James Bond'           [3×2 double]
    [3.141592653589793]    [5×5 double]

C =
  1×4 cell 数组
    'James Bond'    [3.141592653589793]    [3×2 double]    [5×5 double]

function

在这里插入图片描述

五、File Access,将workspace 的数据存到File里,save()and load()

clear;  
a = magic(4);
save mydata1.mat 
save mydata2.mat -ascii
load('mydata1.mat') 
load('mydata2.mat','-ascii')

从excel上读取数据

Score = xlsread('04Score.xlsx') 
Score = xlsread('04Score.xlsx', 'B2:D4')

基础绘图

  • plot()
  • hold on /hold off ,保持多个图形
  • plot(x,y,‘str’),改变绘图的style
  • legend(),产生图的介绍
  • xlabel()
  • ylabel()
  • title()
  • text()
hold on 
plot(cos(0:pi/20:2*pi));
plot(sin(0:pi/20:2*pi)); 
hold off
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值