当前位置: 首页 > news >正文

GNU Octave 基础教程(2):第一个 Octave 程序

目录

1. 方式一:命令行直接打印

2. 方式二 :编写 .m 脚本文件

3. 稍微升级一下:自定义函数

4. 比较 disp vs. printf

5. 总结


今天我们来写 Octave 的第一个程序,"Hello World!"。“Hello, World!” 是编程语言学习中的传统第一个程序。它的任务很简单:在屏幕上打印出这行文字。这个程序虽然简单,却代表着你正式踏入了编程世界。我们分别用命令行工具 (CLI)和 Octave script 文件 (.m 文件) 来实现。在编写程序之前我们需要安装 GNU Octave,具体请参照上一篇教程: GNU Octave 基础教程(1):在 Ubuntu 22.04 和 Windows 11 上的安装指南-CSDN博客。

1. 方式一:命令行直接打印

在 Octave 命令行中输入以下内容并回车:

或者我们可以使用格式更灵活的 printf:

这里的 '\n' 代表回车换行符。怎么样?是不是感觉很简单。关于 disp() 与 printf() 函数的区别,我们会在后面会介绍。

2. 方式二 :编写 .m 脚本文件

GNU Octave 也允许我们编写脚本文件。同 Matlab 一样,脚本文件是以 .m 结尾的文本文件,包含一段可重复运行的代码。我们先查看一下 GNU Octave 当前的工作路径:

我们在 "C:\Users" 目录下创建一下 hello.m 文件,输入以下内容:

% hello.m
% 第一个 Octave 脚本程序disp('Hello, World!')

保存文件后,在 Octave 命令行中运行:

注意 % 之后为注释,运行脚本的时候并不会被执行。脚本文件的好处是,我们可以保存、修改、反复运行,也方便日后组织更复杂的程序。

3. 稍微升级一下:自定义函数

我们来更进一步,可以用函数方式写一个“智能问候”程序。在 "C:\Users" 目录下新建文件 greet.m

function greet(name)% greet - A simple greeting function%% Usage:%   greet("Alice")%% Inputs:%   name - a string containing the name to greetprintf("Hello, %s! Welcome to GNU Octave!\n", name);
end

这里我们用 function 关键字定义了一个名为 greet 的函数。这个函数有一个参数,名称为 name。这个函数执行一个 printf() 命令,函数的结尾处用关键字 end 标注。printf() 函数中的 %s 表示“将这里替换为一个字符串变量”, 也就是 name。 在 Octave 命令行下运行 greet 函数,输出:

这里我们可以根据需要,更改不同函数变量('Alice'),输出不同的名字。我们会在今后的内容中介绍 GNU Octave 函数的使用。

4. 比较 disp vs. printf

本讲涉及到了 Octave 的两个内置函数, disp() 和 printf() 函数。它们是有所不同的,如下表:

函数用途示例
disp()简单打印,不支持格式化disp('你好')
printf()支持格式控制printf('x = %.2f\n', 3.14)

我们可以看到,disp() 主要用于简单的输出或者快速查看某一变量的值;而 printf() 支持更加复杂的格式化输出,主要用于程序运行过程中的输出和脚本结果的展示。

5. 总结

我们经完成了你的第一个 GNU Octave 程序,并简单的介绍了 GNU Octave 的脚本文件以及函数定义方法,是不是很简单。这只是个开始!欢迎点赞 + 收藏 + 关注本专栏,持续更新,带你 用免费工具完成科研级别的任务

http://www.lqws.cn/news/456337.html

相关文章:

  • 碳中和时代的家电革命,从华为智选IAM看科技企业的环保担当
  • conda导出环境文件requirements.txt
  • 解决 Conda 玑境激活问题:缺少 `bin/activate` 文件的应对方法
  • react 面试题
  • 信创 CDC 实战|国产数据库的数据高速通道:OceanBase 实时入仓 StarRocks
  • flask静态资源与模板页面、模板用户登录案例
  • 服务网格安全(Istio):用零信任架构重构微服务通信安全
  • 【系统规划与管理师第二版】1.3 新一代信息技术及发展
  • 三维视频融合怎么弄?三步实现精准投射与自由修剪
  • 如何在服务器终端下载百度网盘数据
  • Spring 的IoC 和 AOP
  • Git 查询与切换分支的完整指南
  • 语音相关-浏览器的自动播放策略研究和websocket研究
  • OCR大模型,破解金融文档处理困境,从文字识别到文字理解
  • 【国产化-k8s】超混合架构-x86+arm64+欧拉+麒麟V10部署k8s1.32+kubesphere4.1
  • Ubuntu 下安装配置和调优 Oh-my-fish
  • 日志监控与日志分析工具:ELK栈、Fluentd
  • PowerShell批量处理文件名称/内容的修改
  • 局域网文件共享及检索系统
  • 云祺容灾备份系统公有云备份与恢复实操-AWS
  • Rust使用tokio(二)HTTPS相关
  • day03-微服务01
  • 商业秘密被公开后的损失计算:从法律规定到司法实践的深度解析
  • 举办骑行展览的城市需要具备哪些关键条件
  • 【vdbench】vdbench配置文件参数含义
  • 【工具使用-VScode】VScode如何设置空格和tab键显示
  • .Net Framework 4/C# 数据访问技术(ADO.NET)
  • 一些实用的chrome扩展0x02
  • C#上位机实现报警语音播报
  • VS Code快捷键大全