Sma11_Tim3's Studio.

MATLAB使用教程(二)

字数统计: 1.5k阅读时长: 5 min
2020/11/29 Share

做区块链的实验分析的时候,需要使用MATLAB做仿真实验。记录一下相关的教程。本文章转载至https://blog.csdn.net/qq_38431572

前言

在上一篇文章中,我们学习了

  1. 如何调整自己的工作区
  2. 使用matlab时的注意事项,比如不能按CTRL+Q
  3. 语句后面加分号,不是交互式,不加分号,会同时打印结果,即交互式。
  4. 字符串使用单引号才可以。
  5. 变量赋值不需要提前声明,随时使用。
  6. clear清除变量,clc清除屏幕。
  7. who和whos查看我们已经拥有的变量的各项树形。
  8. 类型强制转换。

本讲准备

把matlab编码调整为utf-8编码,因为matlab 中文环境下默认是 gb2312(gbk) 编码。这种编码方式并不通用,如果需要和其他语言交互或者在其他编辑器打开时都会遇到一些麻烦。因此,建议使用utf-8 格式进行编码。

找到MATLAB安装的文件,右键MATLAB的图标,打开文件所在位置。找到lcdata.xml文件,文本方式打开。(2019、2020版本打开lcdata_utf8.xml)

image-20201129205504155

首先,删除这个部分(一定先备份这个lcdata.xml文件,备份就是拷贝一个副本)。

打开并删除lcdata.xml中的:

1
2
3
<encoding name=”GBK”>  
< encoding_alias name=”936”>
</encoding>

并将

1
2
3
<encoding name=”UTF-8”>  
<encoding_alias name=”utf8”/>
</encoding>

改为:

1
2
3
4
<encoding name=”UTF-8”>  
<encoding_alias name=”utf8”/>
<encoding_alias name=”GBK”/>
</encoding>

最后,重启matlab软件,即可把编码更改为utf-8编码。

本讲开始

在别的语言中,都能使用文件写代码,然后使用解释器运行或者使用编译器编译运行,比如 .c .cpp .py .go等,matlab也是一门语言,也可以使用文件来编程,在matlab中使用文件编程有以下注意事项:

  1. 后缀名是 .m
  2. 注释符号是 %
  3. 建议在所有语句后面加分号(;),否则运行时会当作交互式命令输出结果,从而掩盖我们的重要信息。
  4. 文件名仅包含字母、下划线、数字且不能以数字开头。
  5. 编写文件前检查自己是否在工作目录

编写文件时,我们可以选择使用matlab本身的编辑文档编写,也可以选择自己的喜爱的编辑器比如vim,如下图所示:

image-20201130104022437

当没有键入文件名字时,就会新建一个没有名字的文件。需要按下保存键来保存,保存时需要写入名字。

开始编程

下面以test.m文件为例,首先打开文件写入如下代码(建议选择matlab本身编辑,有自动补全。当然也可以使用别的编辑器)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
% 这里是注释行,这个文件演示如何使用文件编辑代码
disp('首先演示后面都加了分号的代码');
age = 20;
name = 'chuckiezhu';
sentence = '你好啊!';
print_str = sprintf('%s年龄是%d.他说:"%s"\n', name, age, sentence);
% sprintf是格式化字符串的函数,返回一个格式化后的字符串
disp(print_str); % 显示目标字符串
disp('---------------分割线---------------------')
disp('然后演示后面都不加分号的代码')
age = 20
name = 'chuckiezhu'
sentence = '你好啊!'
print_str = sprintf('%s年龄是%d.他说:"%s"\n', name, age, sentence)
% sprintf是格式化字符串的函数,返回一个格式化后的字符串
disp(print_str) % 显示目标字符串

运行程序

matlab运行程序时要有以下注意事项:

  1. 文件名只能包含数字、下划线、字母且不能以字母开头。

  2. 文件要包含在工作目录内,即使用ls命令能看到,如下图

  3. image-20201130104248739

    4.输入文件名然后回车就可以运行程序了,但是不用输入.m,只要文件名。

下面是上面代码的运行结果:

image-20201130104627898

可以看到运行出了结果,至于行尾加不加分号,凭个人喜好,但是我这里有两点建议:

  1. 调试程序时,最好不要加分号,这样可以看到每一步的运行结果和自己的想法是否符合。
  2. 实际运行程序时,加分号,防止交互式输出影响我们的结果观测。

知识点小结

今天我们学习了如下知识:

  1. 如何在matlab中显示一句话(使用disp函数)
  2. 怎么格式化一个字符串(使用sprintf函数)
  3. 如何在文件中编写matlab代码(包括使用注释)
  4. 如何调整matlab中的字符编码为utf-8
  5. 编写.m文件时,行尾的分号什么时候使用效果最佳

文末彩蛋

表白代码,如下:

1
2
3
4
5
6
7
8
[x,y,z]=meshgrid(linspace(-1.3,1.3)); 
val=(x.^2 + (9/4)*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (9/80)*y.^2.*z.^3;
isosurface(x,y,z,val,0)
axis equal
view(-10,24)
colormap flag
camlight
lighting phong

运行结果如下:

image-20201130104805495

关于代码中第六行sprintf的用法:

sprintf函数的使用,现在的阶段我们可以理解为这样(如果以后需要用到更高级的用法再讲,一切实用为主):

sprintf(p1[, p2 …]);

这里的p1是必需的,代表我们的原来的、未经处理的字符串。方括号内是可选的,用于添加参数,比如文章中的代码:

sprintf(‘%s年龄是%d.他说:”%s”\n’, name, age, sentence);

%s %d 是“占位符”,就是说占着这个位置,然后用后面的多余的参数来填。

%s占一个字符串的位置,%d占一个整数的位置.

\n则是一个换行,类似的有\t(一个制表符位),\r (回车)等。

sprintf返回一个字符串,就是结果字符串。

disp则是将某个字符串显示到终端中。

by Covteam-Sma11_Tim3

生活不易,多才多艺。

CATALOG
  1. 1. 前言
    1. 1.1. 本讲准备
  2. 2. 本讲开始
  3. 3. 开始编程
  4. 4. 运行程序
  5. 5. 知识点小结
  6. 6. 文末彩蛋