rand(m,n):随机生成m行n列的在(0,1)的均匀分布的伪随机数
randi(iMax,m,n):随机生成在(0,iMax)中均匀分布的随机整数
randn(m,n):随机生成在(m,n)中标准正态分布的随机数
元胞数组:
A=cell(1,6) %一行六列(matlab索引从1开始)
A{2}=eye(3) %eye(n)是n阶对角线为1的单位矩阵
A{5}=magic(5) %幻方矩阵:行、列、对角和相同
矩阵操作
%1.矩阵定义与构造
A=[1 2 3 4 5 6 7 8 7]
B=1:2:9 %初始值、步长、终止值(步长不能省略)
C=repmat(B,3,1) %重复B三行一列
D=ones(2,4) %构建二行四列的全为1的矩阵,类似zeros
矩阵的四则运算
A=[1 2 3 4;5 6 7 8]
B=[1 1 2 2;2 2 1 1]
C=A+B %对应位置相加
D=A-B %对应位置相减
E=A*B' %A*(B的转置)
F=A.*B %对应位置相乘
G=A/B %G*B=A G*B*pinv(B)=A*pinv(B) G=A*pinv(B),相当于A乘B的逆
H=A./B %对应位置相除
结构体
books=struct('name',{{'Machine Learning','Data Mining'}},'price',[30,40])
books.name %'Machine Learning','Data Mining'
books.name(1) %'Machine Learning'
books.name{1} %Machine Learning
%注意()与{}取出来的单位不同,()取出来单位为cell,而{}取出来为字符串的值
程序结构
1.顺序结构
2.循环结构
2.1for…end
步长默认为0,可以省略。初值、步长、终值可以是正数也可以是负数,还可以是整数和小数,符合数学逻辑即可。
for循环也可以嵌套使用
2.2while
3.分支结构
3.1 if-end
3.2 if…else…end
if 表达式
语句体1
else
语句体2
end
3.3 switch…case…end
该结构是通过与某个表达式的值进行比较,根据比较的结果做不同的选择,实现程序的分支功能
otherwise可省略不写,如果没有则case都不满足时,跳出分支结构。switch与end必须配对使用
基本绘图
1. 二维平面绘图
%后为注释
%1.二维平面绘图
x = 0:0.01:2*pi %定义x的范围,第二个参数表示步长
y = sin(x)
figure %建立一个幕布
plot(x,y) %绘制当前二维平面图
title('y = sin(x)') %标题
xlabel('x') %x轴
ylabel('sin(x)') %y轴
xlim([0 2*pi]) % x坐标值的范围
例子2
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
figure
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot'); %共用一个x的坐标系,在y上有不同的取值
%设置相应的标签
set(get(AX(1),'Ylabel'),'String','Slow Decay')
set(get(AX(2),'Ylabel'),'String','Fast Decay')
xlabel('Time(\musec)')
title('Multiple Decay Rates')
set(H1,'LineStyle','--')
set(H2,'LineStyle',':')
2. 三维立体绘图
%2.三维立体绘图
t = 0: pi/50: 10*pi;
plot3(sin(t),cos(t),t) %三维绘图
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
%hold on %当前轴和图像保持不被刷新,准备接受此后绘制的图,多图共存。即后绘制的图添加在此图的基础上,自动调整坐标轴的范围
%hold off %不保留当前操作,新图出现时,取消原图。即关闭图形保持功能
grid on %把图片绘制出来,在图片中加一些网格线
axis square %使整个图(连同坐标系)呈方体
双峰函数绘图
[x,y,z] = peaks(30); %peaks命令用于产生双峰函数或者是用双峰函数绘图
mesh(x,y,z)
grid
图形窗口分割
x=linspace(0,2*pi,60)
subplot(2,2,1) %把幕布分为二乘二的四块,画在第一块
plot(x,sin(x)-1)
title('sin(x)-1');
axis([0,2*pi,-2,0]
subplot(2,1,2) %将幕布分为二乘一的两块,画在第二块
plot(x,cos(x)+1)
title('cos(x)+1');
axis([0,2*pi,0,2]
subplot(4,4,3) %将幕布分为四乘四的十六块,画在第三块
plot(x,tan(x))
title('tan(x)')
axis([0,2*pi,-40,40])
subplot(4,4,8) %将幕布分为四乘四的十六块,画在第八块
plot(x,cot(x))
title('cot(x)');
axis([0,2*pi.-35,35])