一、数组:
MATLAB中基本上都是使用数组来存储数据的,数组中的单个数据是可以被访问的,访问的方法是数组名后带一个括号,括号内是这个数据所对应的行标和列标。如果这个数组是一个行向量或列向量,则只需要一个下标。
数组的下标都是从1开始的。例:A=[1 2 3 4],则A(2)表示的是数据2.
数组运算与矩阵运算:
数组/矩阵加法:A+B
数组/矩阵减法:AB
数组乘法:A.*B(A和B的元素逐个对应相乘,两数组之间必须有相同的形,或其中一个是标量)
矩阵乘法:A*B(A的列数=B的行数)
数组右除法:A./B(A和B的元素逐个对应相除,A(i,j)/B(i,j),两数组之间必须有相同的形,或其中一个是标量)
数组左除法:A.\B(A和B的元素逐个对应相除,B(i,j)/A(i,j),两数组之间必须有相同的形,或其中一个是标量)
矩阵右除法:A/B(矩阵除法等价于A*inv(B),inv(B)是B的逆矩阵)
矩阵左除法:A\B(矩阵除法等价于B*inv(A),inv(A)是A的逆矩阵)
数组指数运算:A.^B(A和B的元素逐个进行如下运算,A(i,j)^B(i,j),A(i,j)/B(i,j),两数组之间必须有相同的形,或其中一个是标量)
二、变量
像C语言这样的语言中,变量类型和变量在使用之前必须强制声明,这种语言我们叫它强类型语言。相对的,像MATLAB这样的叫弱类型语言,通过简单的赋值形式就可以创建变量,变量的类型取决于创建时的类型。
特殊变量:
Inf:表示无穷大,一般是除以0产生的;
NaN:表示没有这个数,一般由数学运算得到。例如0除以0;
clock:这个特殊变量包含了当前的年,月,日,时,分,秒,是一个6元素行向量
data:当前的日期,使用的字符形式,如30-Dec-2014
eps:代表计算机能辨别的两数之间的最小数(epsilon)
初始化:
a、直接复制(=&&first:incr:last)
b、input方式输入
%this is a program about input
x = input('enter a number:');
string = ['the number u input is:',num2str(x)];
disp(string);
c、从文件中读入
三、输出
1、disp函数
此函数可联合nums2tr(将一个数转化为字符串)和int2str(将一个整数转化为字符串)来产生新的信息,显示在命令窗口中。
2、fprintf函数格式化输出数据
fprintf('the value of pi is %6.0f',pi)
四、简单语句结构
1、if语句(求解二次函数)
%this is a program about equation solution
a = input('please input a = ');
b = input('please input b = ');
c = input('please input c = ');
if b^2-4*a*c>0
x1 = (-b + sqrt(b^2-4*a*c))/(2*a);
x2 = (-b - sqrt(b^2-4*a*c))/(2*a);
fprintf('the answer of this equation is :x1 = %6.2f,x2 = %6.2f\n',x1,x2);
elseif b^2-4*a*c == 0
x = (-b)/(2*a);
fprintf('the answer of this equation is :x = %6.2f',x);
else
real_part = (-b)/(2*a);
image_part = sqrt(abs(b^2-4*a*c))/(2*a);
fprintf('the answer of this equation is :x = %6.2f+%6.2fi\n',real_part,image_part);
fprintf('the answer of this equation is :x = %6.2f-%6.2fi\n',real_part,image_part);
end
2、try...catch
%this is a program about try-catch
a=[1:10];
try
b = input('please input the number u want to cheak:');
disp(['a(' int2str(b) ') = ' num2str(a(b))] );
catch
disp( ['Illegal subscript: ' int2str(b)] );
end