了解点儿MATLAB,知道它非常有用,但一直不太会用,如何快速掌握并运用它呢?
本专栏力争用最简洁的语言和逻辑,让您在最短时间内,学到教材课程中罕见的MATLAB运用技法,从新手迈向成手。
例:
提问:如何删除a中最后一个元素?
>> a(end)=[]a = 0 1 2
提问:如何删去a中的偶数?
tic; %开始计时%主程序fprintf('%s%d%s\n','运行时间:',round(toc),'s');
提问:如何删去向量中重复的元素?
>> a=unique(a)a = 1 2 3
提问,如何删去重复列向量?
>> a=unique(a,'row')a = 1 2 3 4
提问,如何声明 a,b,c,d,e,f 都为 zeros(1,2,3,4)?
a=[1 2]
提问:如何判断矩阵 a 是否为空矩阵?
0 表示不为空,就是说变量a有值了。
提问:用M文件传递函数或脚本的话,代码算法直接就被别人看到了,如何能直接运行却不暴露代码呢?
方法:
将.m文件转换成.p文件,.p文件是一个.m文件的预解析版本(preparsed version),当你第一次运行程序时,MATLAB产生的中间文件,而第二次再运行就明显快了许多,就是因为直接运行了这个.p文件。
制作命令为:pcode (.m文件的名字)
1-0逻辑矩阵在MATLAB中有超强的应用,主要是因为1-0逻辑矩阵是可以作下角标的!
上个例子:
提问,如何生成一个矩阵,尺寸与a相同,但是只有a中是2的部分显示为1?
>> a==2ans = 2×3 logical 数组 0 1 0 0 1 0
是的,就是这么简洁,a==2就可以!
那么,下面的问题就简单了,如何让a中为2的元素“单独”变为4呢?
本质上,a==2在这里,充当的就是下角标的意义。
a=[1 2]; b=[1 3];
如果直接这样判断呢:
显然不行。应该这样:
>> all(a==b)ans = logical 0
all 代表所有元素。不过要注意判断矩阵时,并不能用all。
如果使用all,会是这样的结果:
>> all(a==b)ans = 1×2 logical 数组 1 1
这是因为all是面向向量的函数,它比较的是所有列。这里应该使用isequal。
这个函数可以用于向量么,当然!
a=[1 2; 3 4]
如何让这个矩阵两个方向各重复两遍,形成一个4x4的矩阵呢?
这里再介绍一点高级的,如果想形成如下矩阵,怎么做呢?
1 0 2 0 0 0 0 0 3 0 4 0 0 0 0 0
观察上面矩阵,就是把a矩阵的每个元素都扩展成一个2x2的小矩阵了,这样实现:
很简单吧!
公式在MATLAB中都是难看的格式,如何能显示正常格式公式呢?
直接上图吧:
这样就可以在图片中显示好看的公式了。
联系客服