在学校的时间还有两年,准确的来说只有一年了,在剩下的一年里准备好好学习一下MATLAB然后在开始学习Java。MATLAB从零开始,依据课本。Java希望有经验的大牛也能多给一些经验,让小白少走一些弯路。
1.看到第一个例题遇到w=inf*ones(6) 不认得这些函数应该来说不愧是小白了。
ones(6)生成一个6*6的矩阵。
w=inf*ones(6);
w(1,[2 3 4 5 6])=[34 45 423 23 34]; 对矩阵中第一行中第2、3、4、5、6列进行赋值。
[s,d]=minroute(1,n,w);该语句是输出最短路径的顶点标号,08版本的MATLAB貌似不行,提示有错误,教材是14版的。
网页链接:https://wenku.baidu.com/view/8b492ed63186bceb19e8bb88.html 其中第二个就是例题。
暂且放一放。先看MATLAB基础知识。(深感作为小白的艰难)
MATLAB基础(1)
数据类型中实数函数: 复数相关函数:
floor(x);向下取整 real(z);返回复数的实部
ceiling(x);向上取整 abs(z);返回复数的模
round(x);取最接近的整数 conj(z);返回复数的共轭
fix(x);向0取整 imag(z);返回复数的实部
complex(a,b);创建以a为实部b为虚部的复数
微记:inf 和-inf 分别代表正负无穷大。
MATLAB基础(2)
逻辑符号: a&b(a与b) a|b(a或b)xor(a,b)(ab异或) ~a(非a)
M文件中可用:and(A,B)、or(A,B)、not(A)表示与、或、非。
对数组操作:find函数找出数组中的某些数的位置
find(X);找出X中非零元素的位置(从第一列开始往下数)
find(X==0);找出X中零元素的位置
D=(find(D== -2))=C(find(D== -2)); D中等于-2的元素换成C中相应位置的元素
D(find(D== -1))=[ ];删除D中为-1 的元素
字符串的连接:strcat(s1,s2) int2str用于将整数转换成字符串
:A不是整数的时候先取整在进行转换。
*strcmp用于两个字符串的比较(只比较是否相等)
strncmp用于比较两个字符串的前n个字符,调用格式:M=strncmp(s1,s2,n)
strcmpi用于比较两个字符串是否相等(不区分大小写)
strmatch用于匹配字符串(不是多常用 p50)
findstr(str1,str2)在长字符串中查找短字符串,返回短字符串开始的所有位置
strrep(str1,str2,str3)字符串的替换。将str1中所有的str2替换成str3
islettter判断字符串中是否为数字
isspace判断字符串是否为空
MATLAB基础(3)
函数句柄(一种简介调用函数的方法)
调用格式:Function-handle(函数名)=@Function-Filename(M文件的名称或者MATLAB内部函数名)。调用M(x)就相当于调用思sin(x)函数(p50)【列 2-23看不太懂】
常量与变量(有一定的了解和基础不在叙述了、看一遍复习一下)
全局变量的定义:global MIN;全局变量最好全部用大写字母表示。
永久变量的定义:persistent SU-M;即定义SU-M为一个永久变量。
数组
一维数组的生成
*直接输入法 *步长生成法:X=a:inc:b;inc为数组的间隔步长
*等间距线性生成:X=linspace(a,b,n);此时在a、b之间生成n个线性采样点。
*等间距对数生成法:X=logspace(a,b,n);设定采样点数为n个的时候采用该方法。
1~7之间现行采样4个点,查询第1个和第2个点的值。
多维数组的生成
特殊函数:
eye(n,m)生成n*m的单位阵 ones(n,m)生成全是1的矩阵
zeros(n,m)生成全0矩阵 rand(n,m)生成0~1之间的随机矩阵
diag (V,k)生成对角矩阵其中V是 magic(n,m)生成魔方矩阵
一个向量当k=0时V为主对角线上的元素。
三维数组(行、列、页)的创建以及相关运算(暂不考虑)
数组的运算
数组:A.*B A.\B A.^2 不同于矩阵:A*B A\B A/B A^2
数组运算指的是数组中元素的运算不同于矩阵运算。
数组寻址与搜索
A(1,2) 得到1行2列的元素; A(1,2)=3将1行2列的元素替换为3
A(:,2)=[]删除A中第2列元素
数组排序
sort(A);A若为矩阵将A的每一列元素从小到大进行排序
sort(A,dim);dim=1按列进行排序,dim=2按行进行排序
sort(A,mode);mode=ascend/descend(升序/降序)
[B,ID]=sort(A,dim);B为排序后的矩阵,ID 为新矩阵中对应原始矩阵的位置坐标。
疑点:[row,col,v]=find(A)运行结果是什么意思???
搜索最大、最小值
C=max(A);A若为向量返回其中的最大值;A若为多维数组返回A中每一列的最大值
[C,ID]=max(A,[],1/2];C为A中每一行的最大值,ID为对应的下标位置,若为1返回结果为行向量,若为2返回结果为列向量。
min同max。
低维数组的处理
fliplr 以垂直中线为对称轴交换左右元素 flipud 以水平中线为对称轴交换上下元素
rot90 对数组逆时针旋转90度 diag提取对角线上的元素【diag(A)A为向量和矩阵时意义不同】
triu保留上三角元素 tril保留下三角元素
kron数组乘法(不常用) reshape结构变换函数(不常用)
circshift 循环移动数组的行或列
cricshift(A,1)循环移动行; cricshift(A,[0,1])循环移动列;
高维数组处理(略)
单元数组创建cell
c=cell(n)创建n*n的空矩阵元胞数组c
c=cell(m,n)创建m*n的空矩阵元胞数组c
c=cell(size(A))创建与A相同大小的元胞数组c
{}用于访问单元值,()用于标识单元不访问单元内的值
单元数组函数(略)
结构体数组struct函数
s=('field1,value1,field2,value2,......)field1:字段名 value:字段值
个人总结:每一个结构中可以包含多个字段,每个字段可包含多个单元数组,但是同一个结构中的单元数组必须有相同数目的单元数组。
稀疏矩阵
特殊的稀疏矩阵
speye(m,n)创建单位稀疏矩阵
speye返回的结果一列是对应非零元素的坐标,一列是非零元素。
R=sprand(S)创建与S矩阵相同结构的随机稀疏矩阵
R=sprand(m,n,density)生成一个服从随机分布的m*n稀疏矩阵,density为非零元素的分布密度
R=sprandn生成服从正态分布的稀疏矩阵同sprand
R=sparse(a)把a矩阵转换成稀疏矩阵的形式。sparse用于生成稀疏矩阵还有多中生成方法(略)
R=full(S)把稀疏矩阵S转化为满纸矩阵R
对稀疏矩阵的操作
A=find(S)返回稀疏矩阵S中非零元素的主值(坐标位置)
n=nnz(S)返回S中非零元素的个数
N=nzmax(S)返回S中菲非零元素按照列顺序排列的列向量
B=spones(S)将S中所有的非零元素替换为零
f=spfun(’function‘,s)用函数对s中的非零元素进行运算
判断是否为稀疏矩阵;稀疏矩阵图形化(略)
应用:(知识重在应用)
例:求解对角线代数方程的解
代码如下:
(未完待续)