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

时间:2023-03-09 09:51:14
MATLAB学习(一)——状态好状态坏,自作自受

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

一、基本情况

1.1 书写  

一行写不下?

%可以加上三个小黑点(续行符)并按下回车键,然后接下去再写。例如 s=-/+/-/+/-/+/-…- /+/-/+/-/;

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=;
for m=min:max
flag=; %the sign of prime or not
j=m-;
i=;
while i<=j & flag
if rem(m,i)==
flag=;
end
i=i+;
end
if flag
n=n+;
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(,);
min=a(,);
for i=:m
for j=: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(,*pi,);
y=sin(x).*cos(*x);
plot(x,y);
title('sinx*cos5x');
xlabel('x');
ylabel('y');
text(x,y,'y'); %线上文字
legend('sinx*cos5x'); %图示
axis auto;
axis on;