一、Matlab 之 初探


后期写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

这里写图片描述
最后得到一个

2×2
的矩阵因为
1+1+22+46+
是一个收敛的实数级数(根据比较判别法就可以了),所以它是一个实数,但我们一般并不关心这个具体的数值。

其它注意:

*和前面加个点的乘是不一样的,加个点表示作用于每个元素。
其他运算符同样的道理

创建数组的时候可以加入步长,格式为
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如何修改默认启动的路径呢?
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ReCclay

如果觉得不错,不妨请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值