注:本文是基于斯坦福的机器学习课程
1. A=[1 2;3 4;5 6]
这样就定义了一个矩阵
size(A)===>3 3
如果是向量:B=[1 2 3 4]
length(B)=4
2.修改路径:cd 'c:\snow'
load 1.dat 加载文件
save 1 保存文件
save hello.mat variable 表示把某个变量存入到文件中
save hello.txt C -ascii %save as text(ASCII)
3.who 显示当前所有的变量名称
whos 显示当前变量的名称和详细的信息
clear variable 表示清楚某个变量
4.对变量的操作
A(3,2) %第三行第二列
A(2,:) %第二行,所有的元素
A(:,2)=[10;11;13] %修改了第二列的所有值
A(:) %修改A为一个列向量
C=[A B] %直接连接两个,A在左,B在右
C=[A ;B] %直接连接两个,A在上,B在右=下
5.矩阵之间的运算
A,B都是矩阵
A*B %计算A 和B的乘积
. 表示对每一个元素进行某种操作,例如:
1 ./A %表示取A中每一个元素的倒数
log(A) %表示对A中的每一个元素取其对数
exp(A) %表示对A中的每一个元素取其自然指数
abs(A) %表示对A中的每一个元素取其绝对值
-A %表示对A中的每一个元素取反
A+1 %表示对A中的每一个元素加1
max(A) %表示求出A中的最大值,但是需要注意,如果A是矩阵的话,是对每一列求出最大值,如果A是向量,则是直接求出最大值
find(a<3) %找出向量中小于3的数字
a<3 %返回的是01字符串,表示每个元素是否小于3
sum(a) prod(a) floor(a) ceil(a) %
sum(A,1) %表示对每一列求所有元素的和
sum(A,2) %表示对每一行求所有元素的和
sum(sum(A.*eye(9))) %求出A的对角线之和
max(rand(3),rand(3) ) %将会返回一个3*3的矩阵,每一个元素都是随机生成的矩阵对应的两个元素的最大值
max(A,[],1) %将会返回一个行矩阵,是A中每一列的最大值
max(A,[],2) %将会返回一个列矩阵,是A中每一行的最大值
max(A) %是对每一列求出最大值
max(max(A)) %求矩阵的最大值 或是也可以先把矩阵变成列 A(:) 然后求max,max(A(:))
A+单引号 %表示求A的转置
pinv(A) %求出A的逆矩阵
6.函数创建矩阵
ones ,zero 创建全1或者全0的矩阵
diag(1,2,3) %创建对角线是1,2,3,其他全部是0的矩阵
e=[] %创建一个空的矩阵
eye(3) %创建一个3*3的单位矩阵
7.数据的可视化
>> t=[0:0.01:0.98];
>> y1=sin(8*pi*t);
>> y2=cos(8*pi*t);
>> plot(t,y1);
>> hold on;
>> plot(t,y2,'r');
>> xlabel('time');
>> ylabel('value');
>> title('my plot');
>> legend('sin','cos');
>> cd 'D:\';print -dpng 'myPng';
>> close %close the figure
clf %清除图像
figure(1);plot(t,y1);
>> figure(2);plot(t,y2);
>> subplot(1,2,1) %divid 1*2,access the first element
>> plot(t,y2);
>> subplot(1,2,2);
>> plot(t,y1);
>> axis([0.5,1,-2,2])
>> print -dpng '2.png'
imagesc(A), colorbar,colormap gray;
8.控制语句
1.if...else statement
符号 意义 例子
== 等于 if x==y
= 不等于 if x =y
> 大于 if x>y
>= 大于等于 if x>=y
< 小于 if x
& 与 if x==1 & y>2
| 或 if x==1 | y>2
~ 非 x~= y
这与 C++ 中的语法又一定的差异:Octave 中条件不需要用括号 () 括起来 (当然使用括号会让程序更加明
了), 而且 statments 程序块不需要用大括号{ } 括起来。另外,Octave 中需要用 end 命令来标识 if 语句的
结束。在 Octave 中,if...end 和 if...endif 都是合法的. 使用 end 可以让 Octave 的文件与 Matlab 文件
兼容.
在 switch 语句中,x 的值依次与 case 中的值比较,如果找到与之相等的值,相应的 statements 将被执
行。注意到在 Octave 中 switch 语句不像 C++ 那样需要 break 语句——Octave 中找到匹配的选项,执行
statements 中的语句并退出 swith 语句。若是没有匹配的项,otherwise 中的语句被执行。例如
octave:##> a=1;
octave:##> switch a
case 0
disp('a is zero');
case 1
disp('a is one');
otherwise
disp('a is not a binary digit');
end
a is one