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;