Octave基本用法

一、基本函数用法

  1. rand(n,m)/randn(n,m):rand函数随机生成n行m列大小范围在0到1之间的随机数,randn函数按照高斯分布生成n行m列的随机数。
  2. eye(n):生成行列数均为n的单位矩阵
  3. ones(n,m)/zeros(n,m):ones生成n行m列元素均为1的矩阵,zeros生成n行m列元素均为0的矩阵
  4. PS1(string):改变命令行前导符号
  5. size(A,[N]),length(A):对于size函数,A为一个矩阵,省略第一个参数时,函数返回一个数组[n,m],其中n为A的行数,m为A的列数;如果添加了第二个参数,则第二个参数表示矩阵的维度;对于length函数,A为一个矩阵,函数返回最大维度的大小
  6. disp():显示变量的值
  7. pwd:显示当前路径
  8. load:load命令用于加载数据文件,可以键入load XX.dat导入文件,也可以键入load(‘XX.dat’)导入文件
  9. who/whos:who查询工作区内的变量名称,whos查询工作区内的详细信息
  10. clear:清除某一个变量,即 clear X,清除变量X;save hello.txt A -ascii 将A矩阵以ASCII格式存储在hello.txt中;如果没有跟变量,则清除全部;clc清屏
  11. save file A:将A矩阵存储到文件file中
  12. 矩阵简单操作:B= A(n:m)表示将矩阵A的第n行到第m行的值赋值给矩阵B,其他维度方法同理,’:’表示所有的元素,例A([1 3],:)表示将矩阵A第一行与第三行的所有元素显示出来。A = [A , B ]表示将矩阵B扩展到原矩阵A的右部,同时将所得到的新矩阵重新赋给A;A(:);表示将A中的所有元素按照列的方向依次形成一个新的列向量;reshape(A(i : j),n,m),其中A是一个列向量 , i和j表明将列向量的第i项到第j项取出重组为另一个矩阵 , n和m分别是重组后对应的行和列,
  13. 矩阵的简单计算:加减乘不再详细叙述;‘.*’表示矩阵对应位置上的数值相乘,并将结果附到新矩阵的相同位置上,其中的’.’表示对矩阵元素来进行操作,而不是对矩阵的整体进行操作
  14. 数学计算函数(单一参数):log(对数,底为e)、exp(指数函数,底为e)、abs(绝对值)、max(最大值)、min(最小值)、sum(求和)、prod(乘)、floor(向下取整)、ceil(向上取整)
  15. 数学计算函数(多个参数):max(A,[],1);其中A为矩阵,1表示每一列比较,如果替换为2则表示每一行的比较
  16. 其他简单函数:find(operation),输出满足operation的值的索引,二维数组会有两个返回值[r,c],即满足operation的值的索引为r作为行,c作为列;magic(n):生成一个nXn的矩阵,同时,每个元素的值为1到nXn,同时,每行、每列以及对角线上元素的求和相等;flipud()将矩阵上下翻转,pinv(A),计算矩阵A的单位矩阵
  17. 简单做图:plot(x,y)以x为横坐标,y为纵坐标作图,可以添加第三个参数,表示图像的类型,如添加’r’,表示颜色为红色,还有其他的类型;如果想要把多个图画在同一个图像中,则在两个作图语句之间添加hold on 语句;(分为x与y轴的属性设置这里仅仅显示x的),xlabel(xString),xString表示x轴的名,legend(string1 , string2 ……),为每条曲线命名,按照作图的顺序设置各个命名,title()设置图表的名称,可以用print -dpng ‘file.png’将图表保存为png图片;键入close命令,可以将当前打开的图表关闭掉;在使用plot函数前使用figure(n),并且保证每次使用plot函数前均使用不同的n值,可以同时开启多个图表窗口,而不是像之前一样用新的图表覆盖旧的图表;subplot(1,2,1),它的作用是将绘图细分为前两个参数为1的两个网格,并开始访问第一个元素。即把图纸分为1 X 2的网格,画图时使用第一个网格;axis([x1,x2,y1,y2])设置刻度值,其中[x1,x2]为横轴的刻度范围,[y1,y2]为纵轴的刻度范围;clf可以清楚图表的内容;imagesc(A)为矩阵A绘制一个彩图矩阵,不同的值对应着不同的颜色深度;colorbar命令显示出颜色代表的数值范围;colormap [color]表示为图像设置一个与color对应的色系,可选的颜色取值用help查询即可
  18. 控制语句:循环语句:for结构如下:

for i=1:10,
v(i) = 2^i;
end;

也可以这样写:

indices = 1:10;
for i=indices,
v(i) = 2^i;
end;

其本质上都是一样的,

while语句结构如下:

i = 1;
while i <= 5,
v(i) = 100;
​ i = i + 1;
end;

while 、break、if同时使用时的结构:

i = 1;
while true,
v(i) = 999;
i = i + 1;
​ if i == 6,
​ break;
​ end;
end;

if-else语句:

if v(i) == 1,
disp(‘One’);
elseif v(i) == 2,
​ diso(‘Two’);
else
​ disp(‘Not one or two’);
end;

二、复杂函数用法

  1. svd():[U,S,V] = svd(sigma);,对矩阵sigma进行奇异值分解,其中sigma是一个nXn的协方差矩阵,U是一个nXn的矩阵
  2. det():num=det(sigma);对矩阵sigma求行列式的值