基本语句结构
函数调用
[返回变量列表]=函数名(输入变量列表)
向量和矩阵生成
v=1:1:3 (中间的1可省略)
T=[1,2,3;4,5,6;v](T是3×3的矩阵,最后一行是刚才定义的v: 1,2,3)
L=zeros(n,m)
子矩阵提取
B=A(v1:v2)
v1向量表示子矩阵要包含的行号构成的向量,v2表示要包含的列号构成的向量。:表示要提取所有的行
循环结构
for语句
for i=V,循环结构体,end
在for循环结构中,V为一个向量,循环变量i每次从V向量中取一个数值,执行一次循环体的内容,如此下去,直至执行完V向量中所有的分量。
while循环
while (条件式),循环结构体,end
if结构
其一般结构为
if (条件1) % 如果条件1满足,则执行下面的段落1
语句组1 %这里也可以嵌套下级的if结构
elseif (条件2) %否则如果满足条件2,则执行下面的段落2
语句组2
… %可以按照这样的结构设置多种转移条件
…
…
else %上面的条件均不满足时,执行下面的段落
语句组n+1
end
开关结构
switch 开关表达式
case 表达式1
语句段1
case {表达式2,表达式3,…,表达式m}
语句段2
…
…
…
otherwise
语句段n
end
函数结构
function [返回变量列表]=函数名(输入变量列表)
注释说明语句段,由%引导
输入、返回变量格式的检测
函数体语句
说明:
1.这里输入和返回变量的实际个数分别由nargin和nargout给出。
2.返回变量如果多于1个,则应用方括号将它们括起来,否则可省去方括号。输入变量之间用逗号分隔,返回变量用逗号或空格分隔。
3.函数可递归调用
可变输入输出个数的处理
所有的输入变量列表由单元变量varargin表示。
inline函数
时为了描述某个数学函数的方便,可以用inline()函数来直接编写该函数,形式相当于M-函数,但无编写一个真正的MATLAB文件,就可以描述出某种数学关系。其调用格式为fun=inline(‘函数内容’,自变量列表)
自设常数
eps 机器的浮点运算误差限。
PC机上eps的默认值为2.2204*10^-16,mhdggx个量的绝对值小于eps,则可以认为这个量为0。
i和j 若i或j量不被改写,则它们表示纯虚数量j。
如果改写后想恢复该变量,则可以用语句i=sqrt(-1)设置,即对-1求平方根。
Inf 无穷大,也可以写成inf。-∞可以表示为-Inf。
NaN 不定式(not a number),通常由0/0运算、Inf/Inf及其他可能的运算得出。 NaN是一个很奇特的量,如NaN与Inf的乘积仍为NaN。
pi 圆周率π的双精度浮点表示。
lasterr 存放最新一次的错误信息。
此变量为字符串型,如果在本次执行过程中没出现这错误,则此变量为空字符串。
lastwarn 存放最新的警告信息。若未出现过警告,则此变量为空字符串。
ans 存放最近一次无赋值变量语句的运算结果。
end 最后一行(列)
nargin 函数输入变量的实际个数
nargout 函数返回变量的实际个数
结果输出txt
name=['i',num2str(I0),'Hc',num2str(H0),'Happ',num2str(Happl),'.txt'];
%文件名,num2str()函数用来在字符串中嵌入数据。
fid = fopen(name,'wt+');
%定义路径和写入方式,其中
'r' : Open file for reading (default).
'w' : Open file, or create new file, for writing; discard existing contents, if any.
'a' : Open file, or create new file, for writing; append data to the end of the file.
'r+': Open file for reading and writing.
'w+': Open file, or create a new file, for reading and writing; discard existing contents, if any.
'a+': Open file, or create new file, for reading and writing; append data to the end of the file.
'A' : Append without automatic flushing; used with tape drives
'W' : Write without automatic flushing; used with tape drives
加"t"表示文本格式。
fprintf(fid, '%.3g tape, %.4g * %.4g mm^2, with distance %.3g mm, under %.10g Gauss field./n', N, length, thick, distance, Happl);
fprintf(fid, 'current density without any even self-field J0=%.2e./n', J0);
fprintf(fid, '/nkim constants (J=alpha/(H+H0))/n');
fprintf(fid, 'pinning force alpha=%.2e;/n', JH);
fprintf(fid, 'character field H0=%.8g./n', H0);
fprintf(fid, 'total current under self field I=%.2e/n', I);
fprintf(fid, 'appearent current density J=I/S=%.2e/n', Jscale);
%文件的抬头,以最后一行为例,结果输出是:"appearent current density J=I/S=1.24e+006"
其中,/n表示换行,/t表示tab。至于数字格式。
数 值 格 式 转 换 例 子
命令 结果
fprintf(' %.0e/n ',pi) 3e+00
fprintf(' %.1e/n ',pi) 3.1e+00
fprintf(' %.3e/n ',pi) 3.142e+00
fprintf(' %.5e/n ',pi) 3.14159e+00
fprintf(' %.10e/n ',pi) 3.1415926536e+00
fprintf(' %.0f/n ',pi) 3
fprintf(' %.1f/n ',pi) 3.1
fprintf(' %.3f/n ',pi) 3.142
fprintf(' %.5f/n ',pi) 3.14159
fprintf(' %.10f/n ',pi) 3.1415926536
fprintf(' %.0g/n ',pi) 3
fprintf(' %.1g/n ',pi) 3
fprintf(' %.3g/n ',pi) 3.14
fprintf(' %.5g/n ',pi) 3.1416
fprintf(' %.10g/n ',pi) 3.141592654
fprintf(' %.8.0g/n ',pi) 3
fprintf(' %.8.1g/n ',pi) 3
fprintf(' %.8.3g/n ',pi) 3.14
fprintf(' %.8.5g/n ',pi) 3.1416
fprintf(' %.8.10g/n ',pi) 3.141592654
x = -(M-1)*dM/2:dM:(M-1)*dM/2;
for p=1:N
fprintf(fid, '/n%5s/n', ['tape', num2str(p)])
y=[x;J(p,:);H(p,:);H(p,:)+Happl];
fid = fopen(name,'at+');
fprintf(fid, '%4s/t', 'x','J(x)','self H(x)','H(x)');
fprintf(fid, '/n');
fprintf(fid, '%6.2f/t %6.2f/t %6.2f %6.2f/n', y);
end
%定义自变量x(向量)和函数值,输出。
fclose(fid);
矩阵运算
矩阵的代数运算
一、 矩阵转置
MATLAB中用A’可以求出A矩阵的Hermit转置(共轭转置),矩阵的转置则可以由A.’求出。
二、 加减法运算
假设在MATLAB工作环境下有两个矩阵A和B,则可以由C=A+B和C=A-B命令执行矩阵加减法。若A和B矩阵的维数相同,它会自动地将A和B矩阵的相应元素相加减,并赋给C变量。若二者之一为标量,则将其遍加(减)于另一个矩阵。其它情况下,MATLAB将报错。
三、 矩阵乘法
MATLAB语言中两个矩阵的乘法由C=A*B直接求出,且这里并不需要指定A和B矩阵的维数。若A和B矩阵的维数不相容(A列数不等于B行数),则将报错。
四、 矩阵的左除
MATLAB中用“/”运算符号表示两个矩阵的左除,A/B为方程AX=B的解X。若A为非奇异方阵,则X=A-1B。
五、 矩阵的右除
MATLAB中定义了“/”符号,用于右除,相当于求方程XA=B的解。
B/A=(A’/B’)’
六、 矩阵翻转
MATLAB提供了一些矩阵翻转处理命令。
七、 矩阵乘方运算
在MATLAB中统一表示成F=A^x。
八、 点运算
两个矩阵之间的点运算是它们对应元素的直接运算,例如.*,.^等。
矩阵维度
size(matrix)=3 2 (3行2列)
length(matrix)=3
叉乘
函数cross 格式C = cross(A,B)
矩阵的逻辑运算
在MATLAB语言中,如果一个数的值为0,则可以认为它为逻辑0,否则为逻辑1。(PS:包括负数和复数)。
一、 矩阵的与运算 在MATLAB下用&号表示矩阵的与运算 二、 矩阵的或运算 在MATLAB下用|号表示矩阵的或运算 三、 矩阵的非运算 在MATLAB下用~号表示矩阵的非运算 四、 矩阵的异或运算 在MATLAB下矩阵A和B的异或运算可以表示成xor(A,B)。 矩阵的比较运算 < = > <= >= == ~=