MATLAB总结7:常见错误归纳
本篇专门用于记录一些应试技巧
文章目录
前言
记忆力比较差,把学习过程中常用的语法记录于此,方便回忆时索引
一、一些小定义和小技巧
- rand的使用
rand 是用于生成在(0,1)上随机数的函数,而后面加入 rand(1,2),则意为一个一行两列的(0,1)矩阵,不可乱加。需要使用不同范围的随机数则使用 A*rand() 即可
x=5*rand();
y=5*rand();
- 符号
取余:mod(A,b)%A是要进行取余的数字,b是除数
不等于:~=
-
find()的使用
用r=find(A<=0.6),直接找到A中小于0.6的下标 -
分段函数的使用
y=(x<=8).* (2*x)+(x>8&&x<12).*(3*x)+(x>12).* (4*x);
- upper, lower的大小写转换
for i=1:length(v)
if v(i)=='a'
r(i)=upper(r(i));
elseif v(i)=='h'
r(i)='2';
elseif v(i)=='v'
r(i)='3';
end
end
二、蒙塔卡罗求解方法
1.函数的定义
代码如下(示例):
function c=myobj(x)
c=10*x(1)^3+x(3)*(x(1)^2+x(2)^2);
function r=mycon(x)
r=[x(1)^2+x(2)^2-x(3)-10 ; x(1)^2+x(2)^2+x(3)-3];
function m=myrand
while 1
m=[10*rand-5 ;10*rand-5 ;10*rand-5 ];
if mycon(m)<=0
return
end
end
2.函数引用
代码如下(示例):
function [val,x]=myfun2
rand('seed',11);
betterx=myrand;
betterval=myobj(betterx);
for i=1:10000
betterx=myrand;
if myobj(betterx)>betterval;
betterval=myobj(betterx);
end
end
x=double(betterx);
val=double(betterval);
3.代码量较少的蒙塔卡罗
function [val,x]=myfun2
rand('seed',11);
val=0;
for i=1:100000
s=