Octave/Matlab 基础

来源:互联网 发布:如家精选 知乎 编辑:程序博客网 时间:2024/06/16 19:36

整理自 Coursera 上 Machine Learning课程,第二周的内容。

硅谷的工程师们,在开发机器学习程序时,也常常会使用 Octave/Matlab 先开发一个框架,如果可以 work,那再将它转化成 C++、JAVA 等其他语言。因此,学会使用 Octave/Matlab 很重要。

Basic operation

1 ~= 2 % 判断1是否等于2xor(1, 0) % 异或A = pi % pi直接有A = [1 2; 3 4; 5 6] % 生成3*2的矩阵ones(2, 3) % 2*3的所有数为1的矩阵$w=-6+sqrt(10)*(randn(1,10000)); % 高斯分布hist(w) % 画出whist(w, 50) % 横坐标50等分画出I = eye(4) % 单位矩阵help eye % 查看 eye() 函数的帮助文档help help % 查看 help 命令的帮助文档

Moving Data Around

A = [1 2; 3 4; 5 6] % 生成3*2的矩阵size(A) % 查看A的形状,返回的值[3, 2],其实是个 1*2 的矩阵,同样也可以存起来size(A, 1) % 返回A的第一维长度length(A) % 返回A的最长一个维度的长度,如果A是上面的例子,那就返回3%% 一般来说,只对向量使用 lengthpwd % 查看当前工作路径,可以用 cd 命令来改变路径ls % 列出当前目录下的文件% 用 load 命令或 load('xxx.dat') 函数可以加载数据who % 显示当前工作环境中的所有变量whos % 更详细地查看当前工作环境中的所有变量clear A % 删除变量 A (clear 用于删除某个变量)save eye.dat I % 将变量 I 存于 'eye.dat' 文件中clear % 清除工作空间中的所有变量load eye.dat % 又把存在 'eye.dat' 文件中的变量 I (变量名还是I)读取了回来save eye.txt I --ascii % 用 tet 文件(ASCII 编码)存储变量A = [1 2; 3 4; 5 6]A[:,2] = [10; 11; 12] % 对 A 的第二列赋值A = A[A, [100; 101; 102]] % 在 A 的右边加一列A(:) % 将矩阵 A 的所有值放入一个单独的列向量中

Computing on Data

A = [1 2; 3 4; 5 6];B = [11 12; 13 14; 15 16];C = [1 1; 2 2];A * C % 矩阵相乘A .* B % 矩阵对应元素相乘A .^ 2 % A 的每一个元素取平方1 ./ A % A 的每一个元素取倒数Log(A) % A 的每一个元素取自然对数exp(A)abs(A)1 + A % 加减号不用'.'A' % A 的转置max(A) % 找出每一列的A的最大值[val, ind] = max(A) % val(ue)记录每一列A的最大值,ind(ex)记录每一列A的最大值的位置A < 3 % 返回每个元素是否小于3A = [1 2 3 4 5 6]find(A < 3) % 返回满足小于3的所有位置A = magic(3) % 生成一个 n=3 维 magic 矩阵,即将 1~n^2 的整数排列成每行每列的和相等的顺序(机器学习中一般不用)[r, c] = find(A>=7) % 找出A中所有大于7的元素的位置,行存储在r中,列存储在c中sum(A) % 求A的每一列的和prod(A) % 求A的每一列的积floor(A) % 将所有元素中的小数向下取整ceil(A) % 将所有元素中的小数向上取整max(rand(3), rand(3)) % 随机生成两个3*3的矩阵,每个位置都进行比较,取大的max(A, [], 1) % A的每一列的最大值,1表示第一个维度,第三个变量的默认值为1max(A, [], 2) % A的每一行的最大值,2表示第二个维度%% 怎么找矩阵A中最大的元素?下面两种方法都可以:max(max(A))max(A(:))A = magic(9)sum(A, 1) % 计算 A 的每一列的和sum(A, 2) % 计算 A 的每一行的和sum(sum(A .* eye(9))) % 计算A的主对角线元素之和 sum(sum(A .* flipud(eye(9)))) % 计算A的副对角线元素之和,flipud表示flip up and down,上下翻转A = magic(3)pinv(A) % pseudo inverse of AA * pinv(A)

Plotting Data

%% 画正弦函数t = [0: 0.01: 0.98];y1 = sin(2*pi*4*t);plot(t, y1);%% 再画余弦函数y1 = cos(2*pi*4*t);plot(t, y2); % 此时,上一张图被替换成了余弦函数%% 如果要同时画这两个函数呢?plot(t, y1);hold on;plot(t, y2, 'r'); % 用红色画余弦函数%% 再对坐标进行命名,绘制图例,注明图像标题xlabel('time')ylabel('value')legend('sin', 'cos')title('my plot')print -dpng 'myPlot.png' % 保存图像close % 关闭图像窗口%% 图像可以编号,下面是在两个窗口画出两个图像figure(1); plot(t, y1);figure(2); plot(t, y2);%% 窗口分割subplot(1, 2, 1); % Divides plot a 1x2 grid, access first elementplot(t, y1);subplot(1, 2, 1); % access second elementplot(t, y2);axis([0.5 1 -1 1]) % 改变坐标范围clf; % 清除图像,但不关闭窗口A = magic(5);imagesc(A); % 用不同颜色来可视化矩阵imagesc(A), colorbar, colormap gray; % colorbar 表示标出颜色标尺,colormap gray 表示用灰度来标颜色

Control Statement

%% 定义函数%% 将下面两行存入 'squareThisNumber.m' 文件中function y = squareThisNumber(x)y = x^2;%% 可以用 addpath() 函数来添加 Octave/Matlab 的搜索路径%% 将 'squareThisNumber.m' 文件所在的路径添加到搜索路径之后,就可以使用函数了%% 函数的返回值可以是一个矩阵
原创粉丝点击