常用函数
clc //控制台清屏
clear //工作区清屏
abs() //绝对值 复数的模
sqrt() //开方
mod() //取余
exp() //指数函数
log() //底为e
log10() log2()
矩阵
1.矩阵基础
1.1赋值运算符=和等号运算符==(和C一样)
1.2定义空矩阵
m=[];
1.3定义一个m*n的矩阵
p=[1 2 3] //行矩阵,分隔的话空格逗号都可以
q=[1;2;3] //列矩阵,分号表示换行
a=[1 2 3; 4 5 6] //二行三列矩阵
1.4使用冒号运算符生成矩阵
1:0.5:10 //从1到10间隔0.5
linspace(初始值,终值,点数默认100)
linspace(1,10,10)
1 2 3 4 5 6 7 8 9 10
1.5矩阵的拼凑和变形
m1=[1 2 3];
m2=[4 5 6];
[m1,m2] //显示 1 2 3 4 5 6
[m1;m2] //显示 1 2 3
4 5 6
reshape(m1,[3,1]) //把m1变成三行一列
1.6几个特殊矩阵
n=3;
eye(n) //单位矩阵,n是阶数
zeros(n) //全零矩阵,n是阶数
zeros(3,5) //三行5列的零矩阵
ones(n) //全一矩阵
ones(2,3) //两行三列全一矩阵
ones(5,5,3) //三维矩阵,行 列 页
//三维矩阵 应用:黑白图像是二维矩阵,彩色图像三维矩阵,RGB三个通道,每个通道都是一个二维矩阵
1.7随机数矩阵
rand(n) //n阶随机数矩阵
rand(3,5) //3行5列随机矩阵
randi(10) //生成一个在1到10之间的随机整数
randi(10,n) //n是阶数
randi(10,[3,5]) //3行5列
randn和randi用法一致,randi返回的值均匀分布,randn正态分布
2.矩阵运算
2.1获取矩阵行列数
m=rand([3,5]);
z=size(m) //z=[3,5]
[row,col]=size(m) //row=3,col=5
2.2矩阵转置,逆矩阵
m的转置:m'
m的逆矩阵:inv(m)
2.3矩阵特征值,特征向量
m=randi(10,3);
eig(m) //特征值
[v,d]=eig(m) //v的每一列是与d对应的特征向量,d的对角线是特征值
2.4矩阵运算
a=[1 2; 3 4];
b=a;
a+b;a-b; //加减
a*b;a.*b //乘,矩阵相乘和每个元素相乘
a/b //a*inv(b)乘b的逆矩阵
a./b //对应元素相除
a\b //inv(a)*b,求Ax=b的解
a^3 //a*a*a
a.^3 //对应元素乘方
2.5广播机制
a=[1 2; 3 4];
b=1;
a+b //新矩阵的每个元素都加了一
2.6逻辑运算
a=[1 2; 3 4];
b=[2 1; 3 4];
a==b a>b //对每个元素进行逻辑判断,真为1
a==1 //广播机制,每个元素都和1比
a.*(a>2) //保留大于2的元素
3.矩阵索引
m=[1 2 3; 4 5 6; 7 8 9];
m(8) //6,列方向检索,第8个位置
m([1,3,5]) //1 7 5,检索第1,3,5个位置
m=(2,3) //第2行第3列的位置
m=([1,2],3) //第1,2行的第三列的位置
m=([1,2],1:3) //前两行的所有列
基本语句
1.变量类型和转化
1.1数值类型
a=1; //数值类型都是double类型,分数值和数值矩阵
b=[1,2]; //可进行加减乘除逻辑运算
1.2字符串类型
s1="hello";
s2='world';
[s1,s2]; [s1;s2] //字符串矩阵
s1+s2 //字符串拼接helloworld
s1+' '+s2 //hello world,字符串只能加
1.3字符串和数值的转化
str2num("5")+4 //字符转数字
num2str(2)+"hello" //数字转字符
num2str(1/3,2) //2是保留位数
2.输入和输出语句
value=input("请输入值:") //输入数值或矩阵之后赋给value
string=input("输入名字:","s") //输入frank
string=input("输入名字:") //输入"frank"
disp(value)
disp("frank") //输出字符串
disp(["hello",2]) //将多个字段转化成字符串矩阵输出"hello" "2"
disp(["1/3="+1/3]) //这样输出就能连起来了
3.运算符和if...else关系语句
3.1关系运算符
> < == >= <=
//非零True,零为False
3.2逻辑运算符
&与 |或 ~非
(1<3)&(3>4)
3.3if...else
if(1<2)
disp("true");
end
value=input("输入一个数:");
if(value==1)
disp("1不是质数也不是合数");
elseif(isprime(value))
disp("是质数");
else
disp("是合数");
end
4.For循环和While循环
for i=[1,3,5]
disp(i);
end
//累加过程
sum=0;
for i=[1,2,3,4,5]//或for i=1:100
sum=sum+i;
end
disp(sum);
n=1;
while n<5
disp(n);
n=n+1;
end
continue; //退出当前循环,继续执行下一个循环
break; //退出整层循环
return; //退出多层循环