MATLAB学习(一)——状态好状态坏,自作自受

  状态不好,学学MATLAB做做准备吧。

一、基本情况

1.1 书写  

一行写不下?

%可以加上三个小黑点(续行符)并按下回车键,然后接下去再写。例如 s=1-1/2+1/3-1/4+1/5-1/6+1/7-…- 1/8+1/9-1/10+1/11-1/12;

1.2 运算相关

不等于:~=

所以,非:~

常用的矩阵运算:

eye(size(A))   产生与A矩阵同阶的单位矩阵

zeros(m,n)         产生0矩阵

ones(m,n)         产生1矩阵

 rand (m,n)        产生随机元素的矩阵

Size(a)          返回包含两个元素的向量。

Length(a)     返回向量的最大者。

--两个栗子

求解线性方程组AX=B                     

             1    1.5   2      9    7                    3  

             0    3.6   0.5  -4    4                  -4 

其中A=      7    10    -3   22   33    , B=    20 

             3    7     8.5   21   6                    5  

             3    8     0      90  -20                16 

    在MATLAB命令窗口输入命令:                           

    a=[1,1.5,2,9,7;0,3.6,0.5,-4,4;7,10,-3,22,33;3,7,8.5,21,6;3,8,0,90,-20];

    b=[3;-4;20;5;16];

    x=a\b

    【例2】  求方程 x^4+7x^3 +9x-20=0的全部根。  

 在MATLAB命令窗口输入:

    p=[1,7,0,9,-20];   %建立多项式系数向量

    x=roots(p)         %求根

二、程序设计

2.1 输入输出数据

--输入

调用格式:  A=input(提示信息,选项);

 R = INPUT('What is your name','s')

求一元二次方程ax^2+bx+c=0

a=input('a=?');

    b=input('b=?');

    c=input('c=?');

    d=b*b-4*a*c;

    x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]

将该程序以aa.m文件存盘,然后运行aa.m文件。

--disp

        A='Hello,MATLAB';

        disp(A)

输出为:  Hello,MATLAB

2.2 举个例子

计算素数

% Calculate the primes between min to max
clc
clear all
max=input('The maxium num is ')
min=input('The minum num is ')

        
 n=0;
    for m=min:max
       flag=1; %the sign of prime or not
       j=m-1;
       i=2;
       while i<=j & flag
           if rem(m,i)==0
              flag=0;
           end
    i=i+1;
       end
       if flag 
          n=n+1;
          prime(n)=m;
       end
    end
    prime %变量prime存放素数
       

输入20个数,求其中最大数和最小数。要求用循环结构来实现。

function [max,min]=findmaxmin(a)
if ~ismatrix(a)
    disp('Please type in a matrix!')
else
    [m,n]=size(a);
    max=a(1,1);
    min=a(1,1);
    for i=1:m
        for j=1:n
            if a(i,j)<=max&a(i,j)>=min
                continue
            elseif a(i,j)>max
                max=a(i,j);
            elseif a(i,j)<min
                min=a(i,j);
            end
        end
    end
end

三、文件操作

建立一数据文件test.dat,用于存放矩阵A的数据

A=[-0.6515  -0.2727  -0.4354  -0.3190  -0.9047
         -0.7534  -0.4567  -0.3212  -0.4132  -0.3583
         -0.9264  -0.8173  -0.7823  -0.3265  -0.0631
         -0.1735  -0.7373  -0.0972  -0.3267  -0.6298
         -0.4768  -0.6773  -0.6574  -0.1923  -0.4389]

 Fid=fopen('test.dat', 'w')


 cnt=fwrite(Fid, A, 'float')



 fclose(Fid)

 四、绘图

4.1 plot

计算0-2pi的sinx*cos5x

clear
clc
x=linspace(0,2*pi,120);
y=sin(x).*cos(5*x);
plot(x,y);
title('sinx*cos5x');      
xlabel('x');     
ylabel('y');       
text(x,y,'y'); %线上文字
legend('sinx*cos5x');  %图示
axis auto;
axis on;       

 

posted @ 2016-03-01 21:09  韧还  阅读(486)  评论(0编辑  收藏  举报