MATLAB使用教程(二)——在文件中编程——新手来看

·前言

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

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

·本讲准备

把matlab编码调整为utf-8编码

首先,删除这个部分(一定先备份这个lcdata.xml文件,备份就是拷贝一个副本),我的是2016版,大概在这里,你们可以搜索以下:

然后,找到这个部分,增加一行:

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

·本讲开始

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

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

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

如果使用edit后面没有加文件名,情况如下图所示:

当我们没有键入文件名字,需要按下保存键去保存。

·开始编程

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

% 这里是注释行,这个文件演示如何使用文件编辑代码
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. 输入文件名然后回车直接运行程序,如图

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

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

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

·知识点小结

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

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

·文末彩蛋

表白神器,代码如下:

[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

运行效果如图:

下期再见! 

----------------------------------------------2020年6月6日更新

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

先给各位道歉,我以为你们都有C语言的基础,以后我会注意这些问题。

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

sprintf(p1[, p2 ...]);

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

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

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

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

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

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

 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章