后期写m文件一个血的教训,有时候程序明明是对的,但是确一直运行出错,这时候可以尝试清除一下工作区的变量也许柳暗花明。。。2333
命令:
clc – 清除命令窗口
clear – 清除工作区的变量
whos – 可以查看内存中存在的变量的详细信息
who – 变量的信息
函数:
plot(x,y)做图
magic(n) 生成一个 n*n的魔术矩阵(行、列以及对角线 的和相等)
sparse(A) 求A的稀疏矩阵,就是列出A中不等于0的坐标以及数值。
format 规范,,,有个倒是不错,,,format rat.. 分数计算就打出来还是分数,一般format是short类型的。
再来加上一个 sym(。。。)这个叫做符号运算也挺好用。。
eye(n) n*n的对角全是1的矩阵
zeros(n1,n2) n1*n2的全0矩阵
ones(n1,n2) n1*n2的全1矩阵
diag(..) 只有对角线有值得矩阵 diag(【1 2 3 4】)
max(A) 表示每一列最大的数构成的矩阵。
同时sum,min同样的道理。。。
mean()
A = [1 2 3; 3 3 6; 4 6 8; 4 7 7];
用mean(A)(默认dim=1)就会求每一列的均值
ans =
3.0000 4.5000 6.0000
用mean(A,2)就会求每一行的均值
ans =
2.0000
4.0000
6.0000
6.0000
sort(A) 也是对单独的列先排序。
sortrows(A) 表示整行绑定在一起的。以第一列大小为标准。
size 表示多少行多少列。。。
length如果A为非空数组,返回行数和列数两者之间数值较大的那一个值,即相当于执行了max(size(A));如果A为空数组,则返回0;如果A是一个向量则返回A的长度
numel(A)该语句返回数组中元素的总数。还可以这样写: length(A(:)),,,,还可以这样写 size(A,1)*size(A,2)
find(A==5) 矩阵元素等于5的位置在哪里。。。
cell数组,,,— 这玩意感觉翻译起来变了味,还是cell好听。
一种混合数据类型,如C语言里面的结构体似的,当然水也挺深。
戳这里详细
关于三角函数角度和弧度转换的,通常加d的表示角度,否则为弧度。
sind(x) -x为角度, sin(x) -x为弧度
eg: 想计算sin60°的值,可以有这几种操作。
sin(60/180*pi)
sind(60)
sin(deg2rad(60)) 角度 to 弧度。
A(:)是将所有元素按列排序
sort(A) == sort(A , 1) == sort(A, ‘ascend’) 对每一列进行升序排列。
sort(A , 2) 对A的每一行进行升序排列。
关于排序,再分享一种很骚气的方法,,,
按第一排进行排序(此处是把每一行绑定在一起,而sortrows是把每一列绑定在一起)
[B, pos] = sort(A(1,:))
A = A(:,pos)
还有一点我觉得非常有意思的就是
A=A(:, pos) //赋值这一行,注意是matlab始终遵循的规则是列优先。也就是说先把每一行固定就,先把每一列的都做好,再走下一行
那么再来看一个相仿的有意思程序
q = 1:4;
for i=1:4
A(i,:) = q.^i;
end
1 2 3 4
1 4 9 16
1 8 27 64
1 16 81 256
哦吼吼,,,轻松搞定。。。
还有一个函数,sortrows十把一行绑定在一起的。。
对了,还有一个东西挺容易迷惑人的。
expm和exp
exp是按照元素进行幂运算,而expm是按矩阵进行幂运算(需要用泰勒公式展开。)
eg:
exp比较简单,e.^A 和 exp(A)是一样的!
A =
1 1 0
0 0 2
0 0 -1
>> exp(A)
ans =
2.7183 2.7183 1.0000
1.0000 1.0000 7.3891
1.0000 1.0000 0.3679
而e^A和expm(A)是一样的,表示矩阵指数。
>> e^A
ans =
2.7183 1.7183 1.0862
0 1.0000 1.2642
0 0 0.3679
>> expm(A)
ans =
2.7183 1.7183 1.0862
0 1.0000 1.2642
0 0 0.3679
这个看的或许不是太明白,那咱接着看这个例子。
D =
1 1
1 1
>> e^A
ans =
2.7183 1.7183 1.0862
0 1.0000 1.2642
0 0 0.3679
>> expm(A)
ans =
2.7183 1.7183 1.0862
0 1.0000 1.2642
0 0 0.3679
最后得到一个
其它注意:
*和前面加个点的乘是不一样的,加个点表示作用于每个元素。
其他运算符同样的道理
创建数组的时候可以加入步长,格式为
x = 起点:步长:终点
还有一点特别不一样,相比于其它编程语言,它的数组下标从1开始!!!
对数组中的元素访问通常两种方法,
第一种没有逗号分隔的
第二种有逗号分隔的
行矩阵,每个元素之间用空格或者逗号隔开,而列矩阵用分号表示换行。
colon opreating 冒号运算符当做index的时候,表示的是全部
eg:选中A矩阵的第三行全部元素,可以这样。。。 A(3,:)
如果要清除可以 A(3, ;) = []
那么同样的道理,如果要选中第三列的全部元素呢?A( ; , 3)
A(3:end)选中第三个元素后面的所有元素
增广矩阵怎么写呢?
直接 F = [A B]就是合起来的增广矩阵, F=【A; B】 不过是B放到A的下面而已了!
%
……
% 两个百分号之间可以写入,相应的section,matlab里面翻译是成“节”了,可以直接运行节。就是只运行这之间的一段。
tic — toc 用来计算程序所用的时间。
当脚本正在busy的时候,为了跳出程序可以按ctrl + c,,跳出程序
Matlab如何修改默认启动的路径呢?