计算与编程策略
一、矢量化编程
MATLAB以矩阵为基本元素
什么是矢量化编程
- 将矩阵视为一个整体,对矩阵中的元素同时进行某种操作或运算,即整块的操作大量数据
矢量化编程的优点
- 代码大大简化,编程效率高,代码可读性高
- 程序执行效率高
例题:0~10等间隔取1001数,计算正弦函数值
matlab">x=0:0.01:10;
y=sin(x);
不需要for循环
例题:A是m*n的矩阵,求矩阵所有元素的和
matlab">sum(A(:))
sum(sum(A))
以前:
matlab">s=0;
for ii=1:size(A,1)for jj=1:size(A,2)s=s+A(ii,jj);end
end
或者:
matlab">for ii=1:numel(A)s=s+A(ii);
end
例题:给定正整数n,求和1/(2n-1)*sin(2n-1)
matlab">n=10;
s=0;
for ii=1:ns=s+1/(2*ii-1)*sin(2*ii-1);
endy=sum(1./(2:2:2*n-1).*sin(2:2:2*n-1))
二、利用矩阵的逻辑判断和比较
例题:
生成10*10的0~1的随机矩阵A,对其中元素按如下函数计算,得到同样大小的矩阵B:
y=x^2+x+1,x<0.5
y=x+1,x>=0.5
以前:
matlab">A=rand(10,10);
B=zeros(10,10);
for ii=1:numel(A)if A(ii)<0.5B(ii)=A(ii)^2+A(ii)+1;elseB(ii)=A(ii)+1;end
end
批量:
matlab">
B=A.^2+A+1;B(A>=0.5)=A(A>=0.5)+1;
B(A<0.5)=A(A<0.5)^2+A(A<0.5)+1;T1=find(A>=0.5);
B(T1)=A(T1)+1;
T2=find(A<0.5);
B(T2)=A(T2).^2+A(T2)+1;
一些常用函数
- find(A):查找A中非零元素的索引和值
- setdiff(A,B):返回A中,但不在B中的元素
- ismember(A,B):若A中元素在B中,则返回这些元素的索引
- unique(A):去除矩阵A中的重复元素,并排序
- union(A,B):合并A和B,并去除重复元素(求并集)
三、命名规则
四、注意事项
- 实现模块化:分解为小模块,采用函数形式
- 充分利用matlab自带的函数
- 通用性
- 注释
- 编写脚本
- 充分利用语法自检
五、常用快捷键
- Ctrl+R:一键注释
- Ctrl+T:取消注释
- Ctrl+L:删除当前行
- %: 注释
- TAB:缩进\补全
- clear:清除当前变量
六、常用标点
- ,:矩阵元素的分隔;输入量的分隔
- ;:数组行间换行