matlab编程入门学习(2)

上一章我们讲述了最简单的matlab的小程序,现在来系统的学习下matlab的基础

第二章、MATLAB的基础

2.1、数组和变量

matlab中基本上都是使用数组来存储数据的,数组中的单个数据是可以被访问的,访问的方法是数组名后带一个括号,括号内是这个
数据所对应的行标和列标。如果这个数组是一个行向量或列向量,则只需要一个下标。这和C语言中说的数组有区别,这里的行列下标都是从1开始的。
A=[1 2 3 4],则A(2)表示的是数据2而不是3。
命名规则:matlab 的变量名必须以字母开头,后面可以跟字母,数字和下划线(_).
好的编程习惯:
1、给你的变量起一个描述性的且易于记忆的变量名。例如,货币汇率可以exchange_rate为变量名。这种方法将使得你的程序更加明确且易于理解。
2、给每个程序创建一个数据字典以增强程序的可维护性。数据字典列举了你在本程序中用到的所有变量的定义。它的定义应包括本条目的所要描述的内容和它在执行时所在的单元。
3、在每次用到一个变量时,我们要确保变量名的大小写的精确匹配。在变量名中只使用小写字母是一个好的编程习惯。

像C 语言这样的语言中,变量类型和变量在使用之前必须强制声明。这种语言我们叫它强类型语言。相对地,像MATLAB 这样的叫做弱类型语言。通过简单的赋值形式就可以创建变量,变量类型取决于创建时的类型。
特殊变量:
Inf 这个符号代表无穷大,它一般情况下是除以0 产生的
NaN 这个符号代表没有这个数。它一般由数学运算得到的。例如,0 除以0。
clock 这个特殊变量包含了当前的年,月,日,时,分,秒,是一个6 元素行向量
date 当前的日期,使用的的字符形式,如30-Dec-2013
eps 变量名是epsilon 的简写。它代表计算能机辨别的两数之间的最小数

2.2、变量的初始化

三种方式:
1、直接复制(= && first:incr:last)
2、input的方式进行输入
%this is a program about input
x = input('enter a number:');
string = ['the number u input is:',num2str(x)];
disp(string);

3、从文件中进行读入

2.3、输出

1、disp函数
此函数可联合num2str(将一个数转化为字符串)和int2str(将一个整数转化为字符串)来产生新的信息,显示在命令窗口(The Command Windows)中。
2、fprintf函数格式化输出数据
这个简直相当的好用
fprintf('the value of pi is %6.0f',pi)

2.4、matlab的数组和矩阵运算

运算 MATLAB 形式 注释
数组加法 A+B 数组加法和矩阵加法相同
数组减法  AB 数组减法和矩阵减法相同
数组乘法  A.*B 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 矩阵除法,等价于inv(B)*A, inv(A)是A 的逆阵
数组指数运算  A.^B AB 中的元素逐个进行如下运算A(i,j)^B(i,j),A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量.

2.5、matlab简单的画图

给个简单的例子大家会比较清楚
%this is a program about plot
x = 0:0.01:10;
y = sin(x);
plot(x,y);
title('show sin(x)');
xlabel('x');
ylabel('y');
grid on;

其中最后一句是画个网格出来,好参考数据值。
legend('sin(x)','cos(x)',-1);%图例

给出图像的简单图例

第三章、分支语句和编程设计

3.1、简单的说下if语句

看下面的程序,简单的求解2次函数
%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
    
    
可以把二次函数的解求出来
再看个嵌套的程序
%this is a program about grade
grade = input('please input your grade:');
if grade>95
    disp('A');
else
    if grade>86
        disp('B');
    else
        if grade>76
            disp('C');
        else
            if grade>66
                disp('D');
            else
                disp('F');
            end
        end
    end
end
好,基本上if语句到此结束!!

3.2、简单的介绍try...catch

try/catch 结构是选择结构的一种特殊形式,用于捕捉错误。一般地,当一个matlab程序在运行时遇到了一个错误,这个程序就会中止执行。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
利用hold on命令在同一坐标系下画多幅图像,并显示多幅图像
figure(1);
x = x:0.05:2;
y1 = exp(x);
plot(x,y1);
figure(2);
y2 = exp(-x);
plot(x,y2);
subplot(2,1,1)用来创建在一幅图像中显示多幅图像和上面的有区别,上面的是分别显示,这个是在一幅图像中分别显示

3.3、好的编程习惯

在有选择结构和循环结构的编程中,要遵循以下的编程指导思想。如果你长期坚持这些原则,你的代码将会有很少的错误,有了错误也易于修改,而且在以后修改程序时,也使别人易于理解。
1. 在我们检测两数值是否相等时一定要小心,因为round off 错误可能会使两个本来应该相等的值不相等了。这时     你可以在round off 错误的范围内它是不是近似相等。
2. 遵守基本编程设计步骤来编写可靠,易理解的MATLAB 的程序。
3. 在if 结构和switch 语句中,语句块要缩进两个空格



  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值