Matlab学习总结

Matlab学习指南

matlab笔记20180415

记住:对于MATLAB来说,应该尽量摒弃“循环”处理,而采用“向量化”处理方式。少用循环,多用并行向量计算

技巧1:可以借助“历史指令窗”进行历史指令的再运行

注意:MATLAB 软件光盘总包含很多工具包,它们有的是通用的,有的则专业性很强。对一般用户来说,完全不必采取全部安装,而应根据需要有所选择。否则将占据很多硬盘空间。

技巧2:设置当前目录。

出于MATLAB 运行可靠和用户方便的考虑,本书作者建议:在MATLAB 开始工作的时候,就应把用户自己的“用户目录”设置成当前目录。

3)把用户目录设置成当前目录的方法

方法一:交互界面设置法

在 MATLAB 操作桌面右上方,或当前目录浏览器左上方,都有一个当前目录设置区。
它包括:“目录设置栏”和“浏览键”。用户或在“设置栏”中直接填写待设置的目录名,或借助“浏览键”和鼠标选择待设置目录。

方法二:指令设置法

通过指令设置当前目录是各种 MATLAB 版本都适用的基本方法这种指令设置法的适用范围比交互界面设置法大。它不仅能在指令窗中执行,而且可以使用在M 文件中。假设待设置的用户目录是 c:\mydir ,那么把它设置为当前目录的指令是cd c:\mydir 。

注意:以上方法设置的当前目录,只是在当前开启的MATLAB 环境中有效。一旦MATLAB 重新启动,以上设置操作必须重新进行。

技巧3:全局变量的设置

ans 计算结果的默认变量名

eps 机器零阈值

NaN 或 nan 不是一个数(Not a Number),如 0/0,?/?

Inf 或inf 无穷大,如1/0

nargin 函数输入宗量数目

i 或 j 虚单元i,j

nargout 函数输出宗量数目

pi 圆周率?

realmax 最大正实数

realmin 最小正实数

%在一个物理行中,允许输入多条指令。但各指令间要用“分号”或“逗号”分开。

%指令后采用“分号”,使运算结果不显示。

clf清空图形窗。逗号用来分隔两个指令。

%绘图语句

plot([0,z1,z12],'-b','LineWidth',3)  %连接点0-z1,z1-z12
hold on
plot([z1,z12],'ob','MarkerSize',8)  %画圆圈
text(2.5,3.5,'z12')  %重要点标注

如何得到所有复数根

先构造一个多项式 p®=r^3-a
p=[1,0,0,-a]; %p 是多项式 p®的系数向量
%指令末尾的“英文状态分号”使该指令运行后,不显示结果。
R=roots§ %求多项式的根

从 MATLAB7.0 起,指令窗中的字符、数值等采用更为醒目的分类显示:

(1) 对于输入指令中的if, for, end 等控制数据流的MATLAB 关键词自动地采用蓝色字体显示。

(2) 对于输入指令中的非控制指令、数码,都自动地采用黑色字体显示。

(3) 输入的字符串自动呈现为紫色字体。

在指令窗中显示的输出有:指令执行后,数值结果采用黑色字体输出;而运行过程中的警告信息和出错信息用红色字体显示。

cd 设置当前工作目录。
exit 关闭/退出 MATLAB
clf 清除图形窗quit 关闭/退出 MATLAB
clc 清除指令窗中显示内容more 使其后的显示内容分页进行
clear 清除MATLAB 工作空间中保存的变量
return 返回到上层调用程序;结束键盘模式
dir 列出指定目录下的文件和子目录清单
type 显示指定M 文件的内容
edit 打开M 文件编辑器which 指出其后文件所在的目录

在使用 MATLAB 的过程中,为管理方便,本书作者建议:用户应尽量为自己建立一个专门的工作目录,即“用户目录”,用来存放自己创建的应用文件。尽管,matlab\work 允许用户存放文件,用户最好仅把它作为临时工作目录使用。

当用户从指令窗送入一个名为 cont 的指令后,MATLAB 的基本搜索过程大抵如下。

  1. 检查 MATLAB 内存,看cont 是不是变量;假如不是变量,则进行下一步。
  2. 检查 cont 是不是内建函数(Built-in Function);假如不是,再往下执行。
  3. 在当前目录上,检查是否有名为 cont 的M 文件存在;假如不是,再往下执行。
  4. 在 MATLAB 搜索路径的其他目录中,检查是否有名为cont 的M 文件存在。

pathtool。 添加文件路径

符号运算求解方程的根,积分,导数,微分方程,傅里叶变换,拉普拉斯变换

非数的属性判断

class(a)  %类型判断
ans =double
isnan(a)  %判断是不是NAN
ans =1

matlab 实现多项式拟合与插值

matlab可视化技术

散点图绘制,子图,对比图,图例,坐标线,动态图形:图形转动

条件语句

switch condition
case 1   r='满分';
case 2   r='优秀';
case 3   r='良好';
case 5   r='及格';
otherwise   r='不及格';
end

统计计算时间

tic
程序
t1=toc

函数前面检查输入参数的书写

switch nargin
case 0  N=100;R=1;str='-b';
case 1  R=1;str='-b';
case 2  str='-b';
case 3    ;
otherwise   error('输入量太多。');
end;

matlab自带的函数spdiags功能测试

测试实例

选取A矩阵如下所示
[ 5 0 3 0 0 1 6 0 4 0 0 2 7 0 5 0 0 3 8 0 3 0 0 0 9 ] (1) \left[ \begin{matrix} 5 & 0 & 3 &0 &0 \\ 1 &6 & 0 &4 &0 \\ 0 & 2 & 7 & 0 &5\\ 0 & 0& 3 &8 &0 \\ 3& 0&0 &0 &9 \end{matrix} \right] \tag{1} 5100306200307300408000509(1)

  1. 运行如下命令

B2=spdiags(A,[2,3]) %按对角提取2,3行元素组成一个矩阵

结果如下
[ 0 0 0 0 3 0 4 0 5 0 ] (2) \left[ \begin{matrix} 0 & 0 \\ 0 &0 \\ 3 & 0 \\ 4 & 0 \\ 5& 0 \end{matrix} \right] \tag{2} 0034500000(2)

  1. 运行如下命令

spdiags([-3;-3],-3,A) %用B替换A的部分元素,其中最后结果为稀疏矩阵。
full(B3)

结果如下
[ 5 0 3 0 0 1 6 0 4 0 0 2 7 0 5 − 3 0 3 8 0 3 − 3 0 0 9 ] (3) \left[ \begin{matrix} 5 & 0 & 3 &0 &0 \\ 1 &6 & 0 &4 &0 \\ 0 & 2 & 7 & 0 &5\\ -3 & 0& 3 &8 &0 \\ 3& -3&0 &0 &9 \end{matrix} \right] \tag{3} 5103306203307300408000509(3)

  1. 运行如下命令

B4=spdiags([ones(5,1),2ones(5,1),1.5ones(5,1)],[-1,0,1],5,5)
full(B4) %把稀疏矩阵变为一般矩阵形式。

结果如下
[ 2.0000 1.5000 0 0 0 1.0000 2.0000 1.5000 0 0 0 1.0000 2.0000 1.5000 0 0 0 1.0000 2.0000 1.5000 0 0 0 1.0000 2.0000 ] (4) \left[ \begin{matrix} 2.0000 &1.5000 & 0 & 0 & 0\\ 1.0000 &2.0000 & 1.5000 & 0 & 0\\ 0 &1.0000 & 2.0000 & 1.5000 & 0\\ 0 & 0 & 1.0000 &2.0000 &1.5000\\ 0 & 0 & 0 &1.0000 & 2.0000 \end{matrix} \right] \tag{4} 2.00001.00000001.50002.00001.00000001.50002.00001.00000001.50002.00001.00000001.50002.0000(4)

测试程序的代码如下

%测试matlab自带的函数spdiags
%稀疏矩阵设置
A=diag([1 2 3 0],-1)+diag([5 6 7 8 9],0)+diag([3 4 5],2);A(5,1)=3;
%%
A
B1=spdiags(A) %按对角稀疏存储该矩阵,改变了矩阵大小
%B = spdiags(A,d) extracts the diagonals specified by d.
B2=spdiags(A,[2,3]) %按对角提取2,3行元素组成一个矩阵
% A = spdiags(B,d,A) replaces the diagonals of A specified by d with the columns of B.  The output is sparse.
B3=spdiags([-3;-3],-3,A) %用B替换A的部分元素,其中最后结果为稀疏矩阵。
size(B3)  %仅仅是稀疏存储,本质上还是5*5矩阵
B3*ones(5,1)  %可以直接相乘
% A = spdiags(B,d,m,n) creates an m-by-n sparse matrix from the columns of B and places them along the diagonals specified by d.
B4=spdiags([ones(5,1),2*ones(5,1),1.5*ones(5,1)],[-1,0,1],5,5) 
full(B4)   %把稀疏矩阵变为一般矩阵形式。

matlab大段注释的方法

  • 方法一
    注释语句的快捷键是Ctrl+R
    取消注释的快捷键是Ctrl+T
    并且支持一次注释(或者取消注释)多行语句。选定要注释(或者取消注释)的那些语句,然后按Ctrl+R(或者Ctrl+T)就可以了。
  • 方法二
    采用matlab块注释方法格式如下
    %{
    需要注释的若干语句
    %}

Octave 使用 plot 未响应

参考网址:Octave 使用 plot 未响应

在 Octave 命令行中执行 graphics_toolkit,看看输出是什么。我的输出的是

>> graphics_toolkit
ans = qt

查看可用的图形工具

>>  available_graphics_toolkits
ans =
{
  [1,1] = fltk
  [1,2] = gnuplot
  [1,3] = qt
}

如果不是 gnuplot 的话,执行如下命令即可。设置成 fltk 也能画图。

graphics_toolkit('gnuplot')

但这样只是临时改变。永久改变需要修改配置文件。直接把上述命令复制到里面即可。

\Octave\share\octave\site\m\startup\octaverc

这样的话,重新安装软件时,肯定就没了。另一种方式是维护自己的配置文件。

c:\Users\用户名\.octaverc

有趣的matlab程序

参考网址:https://www.zhihu.com/question/27780598

I love you

char([73 32 108 111 118 101 32 121 111 117])

玫瑰花

[x,t] = meshgrid(0:0.1:1,-1:.03:30);
p = (pi/2)*exp(-t/8);
u = 1-(1-mod(3.6*t,2)).^4/2;
y = 2*(x.^2-x).^2.*sin(p);
r = u.*(x.*sin(p)+y.*cos(p));
figure('color','w'),view(70,70),axis image off
surface(r.*cos(t*pi),r.*sin(t*pi),...
    u.*(x.*cos(p)-y.*sin(p)),'EdgeColor','none','FaceColor','r')
light('style','local','pos',[1 -1 3]),lighting gouraud

你可能感兴趣的:(使用总结)