导言:这门课说实话我看了得有一遍,之前matlab也用过一段时间.奈何我忘性太大,工具一段时间不用就不熟悉了,遂决定重新启动matlab的学习,虽说有内置教程,但是先拿视频课程过一遍大概,方便我自己日后复习,也在这里做一个分享罢了.
同样的,我还找到了一些关于matlab的书籍,部分内容会更新到matlab学习案例的后面部分(如果有的话)
MATLAB学习笔记(一) 基本操作
台湾大学 郭彦甫 课程地址
0.课程安排
目录
目录
6.arrry:matrix and vector 矩阵和向量
1.matlab应用界面
没什么好讲的,自己随便点点看就知道
1)主页选项卡
matlab在这里读取档案资料(之前还没注意过)
2)绘图选项卡
画各种图案,挺好玩的.
再次感叹其强大....
3)app选项卡
各种功能
2.基本运算
2.1四则运算
addition | + |
subtraction | - |
multiplication | * |
division | / |
power | ^ |
default output variable | ans |
左除和右除
- 左除(left division):用符号
\
表示。假设我们有一个线性方程组AX = B
,其中A
是一个m×n矩阵,X
是一个n×1列向量,B
是一个m×1列向量。我们可以使用左除来求解X
,即X = A \ B
- 右除(right division):用符号
/
表示。假设我们有一个线性方程组XA = B
,其中A
是一个n×m矩阵,X
是一个1×n行向量,B
是一个1×m行向量。我们可以使用右除来求解X
,即X = B / A
2/4=0.5
4\2=2
2.2常用运算指令(对数要通换底任意求值 ex log4(2)=log2/log4)
exp() | e指数 |
log() | loge() |
log10() | lg() |
sqrt() | 开根号 |
练习题
cos(sqrt((1+2+3+4)^3/5))
sin(sqrt(pi)+log(tan(1)))
2^(3.5*1.7)
exp(sin(10))
2.3查询变量
who | all varibles |
whos | var and value |
help name | 求助关于name的信息 |
3.变数(变量)种类
简略介绍
defeault 为 double
4.numeric 格式显示
利用format控制变量显示
分号不显示运算结果
5.删除变量
假设已有变量a,b,c,d
要删除a
则clear a
clear x | dell single x |
clear all | clear all var |
clc | 清屏 |
clear 变量 clear name1 ... nameN delete 用于文件删除
6.arrry:matrix and vector 矩阵和向量
6.1向量
行向量row vector
[1 2 3 4]
列向量column vector
[1 ;2 ;3 ;4]
6.2矩阵
A=[1 21 6;5 17 9;31 2 7 ]
6.3 array indexing 重要
我发现在各种操作中matlab似乎是列优先的,比如说sum(A)是对列求
0.indexing要用圆括号()
且way1是竖式计数的
索引全部用:
- way1
- 取元素A(row,line)//开始于1,不同于python的地方
- A( [1 3],[1 3] ) // 1 31/6 7
- way2
- 取元素A(x)
- A(3) // 31
- A( [1 2 3 1 ] )
- A( [ 1 3;1 3] ) // 1 31/1 31
clear
a=[ 1 59 6 4 5;5 6 8 1 2;5 6 21 4 8;1 5 6 9 7; 1 2 3 4 0]
% 取竖列前六个
a([1 2 3 4 5 6]) %way1 a(x)
a([1:5],1) %way2 a(row,line)
% 中心9个
a([2:4],[2:4]);
%最后的0
a(25);
a(5,5);
a([5],[5]);
%第二行的第一个和第三个
a(2,[1 3])
% 怪怪但是合法的写法
a([1:5 1]) ; %way1(没加逗号.但是1:5 1 意味着前五个+第一个)_
练习
a=[1 21 6;5 17 9;31 2 7]
% a(1,2)=76;
% a(3,2)=0;
a([4,6])=[76,0];
a([1 2],[2 3])=0;
a(3,:)=[]
7.冒号命令colon
1.linsapce(a,b)//a-b 100 nodes ave
2.linspace(a,b,n)//a-b n noedes ave
3.x=1:0.1:10
4.y=[1:10;3:13;9:19]
8.矩阵操作
8.1拼贴 A B(简单理解)
[A B] rowadd 横着拼接
[A;B] lineadd 竖着拼接
8.2元素计算操纵
- A*B就是线性代数式的相乘
- A.*B是元素逐个相乘
- A/B就是A*INV(B)
- A./B就是元素逐个相除
- A与a进行点除,除是一样的
- A^2andA.^2不一样,第一个A*A,第二个是元素乘
- sin(A)
关于矩阵除法参见
实际上这是一个解方程的做法
a/b→bx=a
a\b→ax=b
8.3特殊矩阵
8.4 常用操作
列优先
clear
a=[1 2 3;5 9 7;11 5 3]
max(a);
max(max(a));
min(a);
min(min(a));
sum(a);
sum(sum(a));
mean(mean(a));
sort(a);%每个coloum列单独运行
sortrows(a);%对whole row排序感觉不会用的上
size(a);
[x,y]=size(a)
find(a==5)
find(a==11)
find(a>3)
find(a<5,3)%前三元素
介绍一下find函数,十分有用
k = find(X) k = find(X,n) 前n个非0元的下标 k = find(X,n,direction) [row,col] = find(___) [row,col,v] = find(___) 先定义数组/矩阵x x=[1 2 3;4 5 6;7 8 9] case1: find(x) 非0元索引返回 find(~x) find(x,5) 前五个非0元索引返回 case2: find(x<2) find(x==5,5) 前五个<5元素索引序列返回 X = [18 3 1 11; 8 10 11 3; 9 14 6 1; 4 3 15 21] [row,col] = find(X>0 & X<10,3) [row,col,vector] = find(X>0 & X<10,3)%注意这时候vector会返回01布尔矩阵
这是我们想要的功能,find接受三个输出时所不具备的
a=[1 2 3 ;4 5 6;7 8 9]
[m,n,var]=find(a>3)
b=[ ];
for i=1:length(m);
b(i)=a(m(i),n(i));
end
b
额外的
a=b(b>4)索引查询方式
a(a>22)=1%全部替换
8.5保存和读取
要使用这种文件路径表示方式,你需要了解文件和文件夹在计算机上的组织结构。以下是一些基本步骤,帮助你使用文件路径表示法:
- 确定驱动器:首先,你需要知道文件或文件夹位于哪个驱动器(例如,C盘、D盘等)。在Windows资源管理器中,可以看到所有可用的驱动器。
- 确定文件夹层级:接下来,找到文件或文件夹在驱动器中的位置。通常,文件和文件夹会按照层级结构进行组织。例如,一个文件夹可能位于D盘的一个名为"学习资料"的文件夹内,而该文件夹又位于名为"中文"的子文件夹中。
- 构建文件路径:将驱动器名称、路径分隔符(反斜杠)和文件夹名称组合在一起,形成完整的文件路径。例如,上述例子中的文件路径为:
D:\学习资料\中文
。- 添加文件名(可选):如果你需要表示一个具体的文件,可以在文件路径末尾添加文件名和扩展名。例如,如果你要表示一个名为"课程笔记"的Word文档,文件路径将变为:
D:\学习资料\中文\课程笔记.docx
。
工作区中
保存命令 save name var
读取变量 load name
save D:\homework name var
Addendem
A1.矩阵数学运算
a=[1 89 3;4 5 6;7 8 9]
sin(a)
A2.字符串
a="字符串类型"%""创建string
a1='字符类型'%''创建char
class(a)
class(a1)%显示变数类型class()
A=[a;a;a+a]%string可以+,char不行
strlength(A)%string矩阵函数求元素长度
A1=[a1;a1;a1]
length(A1)
length(a1)