(转载)从0开始学matlab(第2天)—MATLAB 变量的初始化

news2025/1/21 0:54:55
        当变量初始化时,MATLAB 将会自动建立变量。有三种方式初始化 MATLAB 中的变量:
1 .用赋值语句初始化变量
2 .用 input 函数从键盘输入初始化变量
3 .从文件读取一个数据
前两种方法我们在这里讨论,第三方法我们将在 2.7 节介绍。

1 用赋值语句初始化变量

        最简单的创建和初始化一个变量的方法是用赋值语句赋予变量一个或多个值。赋值语句的一般形式如
var = expression
        var 是变量名, expression 可以是一个标量、一个数组或常量、其他变量和数学运算符号(+、 - )的联合。这个表达式( expression)的值是通过一般的数学运算法则计算出来的,然后将产生的结果存储到变量 var 中。下面是一些用赋值语句初始化的变量:
var=40*i; 
var2=var/5; 
array=[1 2 3 4]; 
x=1; 
y=2;
        第一个例子创建了一个 double 类型的标量变量,存储了一个虚数 40i。第二个例子创建了一个表达式 var2 ,把 var/5 的值存储于内。第三个例子创建了一个数组 array,并存储了一个 4 元素的行向量于内。最后一个例子显示了多个赋值语句可写在同一行,中间用逗号或分号隔开。注意如果在赋值语句执行时变量已经存在,那么这个变量原有的值将被覆盖。
        正如第三个例子显示的,数据数组也可以初始化变量。我们可以用是括号()和分号建立数组。所有元素按行阶排序,换句话说,每一行的值从左向右,顶部的行置于最前,底部的行置于最后。在一行内单个数值可用空格或逗号隔开,而行与行之间要与则用分号隔开,或另起一行书写。下面的表达式都是合法的,能用于建立一个变量:

         注意一个数组每一行元素的个数必须完全相同,每一列元素的个数也必须完全相同.像[1 2 3;4 5]这样的表达式是非法的,因为第一行有 3 个元素,第二行有只有 2 个元素.

常见编程错误

每一行元素的个数必须完全相同,每一列元素的个数也必须完全相同.试图创建一个不同

( ) 拥有不同数目元素的数组 , 在编译时将会出现错误 .
        用于初始化数组的表达式可以包括代数符号或事先已经定义好的数组. 例如赋值语句
a=[0 1+7] 
b=[a(2) 7 a]
定义了数组 a=[0 8] 和数组 b=[8 7 0 8].
当我们创建一个数组时 , 不是每一个元素都必须定义 . 如果要定义一个特殊的数组 ,或只有一个或几个元素没有定义 , 那么之前的那些元素将会自动创建 , 并初始化为 0. 例如 ,如果数组 c 事先没有定义 , 语句 c(2,3)=5 将会创建矩阵
        相似地,指定一个值赋予一个存在的数组,但超过了这个数组的大小。例如,假设存在一数组 d=[1 2], 下面这个语句
d(4)=4;
        将会制造出数组 d=[1 2 0 4]. 在每个赋值语句末的分号有特殊的目的:无论在何时一个表达式在赋值语句中被赋值,分号将会中止变量值的重复。如果句末没有分号,变量值将会自动显示在命令窗口(The Command Windows)中。
 e=[1 2 3;4 5 6] 
e = 
 1 2 3 
 4 5 6
        如果在赋值语句末有分号,这种重复将会消失。重复是一个用于检查你的工作极好的方法,但是它降低了运行速度。因此,我们在一般情况下总是禁止重复。尽管如此,重复计算的结果提供了一个强大的应急调试器。如果你不能确定一个特定的赋值语句结果是多少,这时你可以去掉这个语句后的分号,当这个语句编译时,结果会显示在命令窗口(The Command Windows)
好的编程习惯
MATLAB 赋值语句后加上一个分号来禁止变量值在命令窗口(The Command Windows) 的重复。这将大大提高编译的速度。
好的编程习惯
如果你在调试程序时需要检测一个语句的结果,可能把句后的分号去掉,这样结果将会出现在命令窗口 (The Command Windows)

2 用捷径表达式(short expressions)来赋值

        创建一个小数组用一一列举出元素的方法是比较容易的,但是当我们创建包括成千上万个元素的数组怎么办?把每一个元素列举出来则不太现实。MATLAB 提供一种专门的捷径标记法,这种方法用克隆运算符(colon operator)适用于上述情况。克隆运算符指定一系列的数值,它指定了这个系列数的第一值,步增和最后一个值。它的一般顺序始下
first:incr:last
        first 代表数组的每一个值, incr 代表步增量, last 代表这个数组的最后一个值。如果步增量为 1 ,那么步增量可省略,而变成了 first:last 格式。
        例如,表达式 1:2:10 是创建一个 1 × 5 行向量 [1 3 5 7 9] 的简便方法。
>> x=1:2:10 
x = 
 1 3 5 7 9

Angles=(.01:.01:1)*pi
        捷径表达式可以联合转置运算符(’)来初始化行向量,或更加复杂的矩阵。转置运算符可以在需要的情况下完成行和列的转换。因为这个表达式
f=[1:4]';

3 用内置函数来初始化

        数组也可以用 MATLAB 内置函数创始化。例如,函数 zeros 可以初始化任何大小的全为零的数组。用许多形式的 zeros 函数。如果这个函数的参数只是一个标量,那么 MATLAB将会创建一个方阵,行数和列数均为这个参数。如果这个函数有两个标量参数,那么第一个参数代表行数,第二个参数代表列数。因为 size 函数所返回的一个数组的行数和列数,所以它可以联合 zeros 函数来创建一个相同大小零矩阵。下面是一些用到 zeros 函数的例子。
a=zeros(2); 
b=zeros(2,3); 
c=[1 2;3 4]; 
d=zeros(size(c))

相似地 ,ones 函数产生的数组包含的元素全为 1,eye 函数通常用来产生单位矩阵 ,只有对角线的元素为 1. 其他元素为 0. 2.1 列出一些用于初始化变量的函数.
 表 1 用于创始化变量的 MATLAB 函数

 

4用关键字 input 初始化变量

        关键字 input 用来提示使用者和直接从键盘输入初始化变量 . 当脚本文件 (Script files) 时, 它可以用来提示使用者输入 .input 函数在命令窗口 (The Command Windows) 显示提示语句 ,并等待用户输入一个值 . 例如 , 下面的赋值语句 :
my_val=input('enter an input value:')
        当这个语句被编译时,MATLAB 打印出字符串 enter an input value:, 然后等待用户回复 .如果要只输入一个数 , 那么只需要直接键入 , 如果要输入一个数组 , 则必须带上中括号 ([]).不管怎样,当按下回车键时 . 在窗口输入的任何值都会被储入变量 my_val. 如果只按下回车键 ,那么这个变量就存储了一个空矩阵 .
        如果 input 函数中有字符 's' 做为它的第二个参数 , 输入的数据就被当字符串 . 因此 , 语句
in1=input('enter data:'); 
enter data:1.23
        把数值 1.23 存储到 in1 . 而语句
in2=input('enter data:','s') 
enter data:123
        把字符串 1.23 存储到 in2 .

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/522766.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux -- 进阶 Web服务器 虚拟主机 -- 基于 域名

基于域名的虚拟主机 &#xff1a; 原理 &#xff1a; # 当服务器无法给每个网站都分配一个独立的 IP 地址时&#xff0c;可以通过用户请求的域 名实现不同域名传输不同的网页数据。 域名解析 &#xff1a; 功能 &#xff1a; 域名<>IP &#xff08; 就是 …

E4A影视APP源码电视盒子酷点TV版4.5 后端对接苹果cms

E4A影视APP源码电视盒子酷点TV版4.5 后端对接苹果cms 内带演示apk是为了方便大家调试&#xff0c;必应搜索醉里技术博客http://202271.xyz/?tv 此版带会员功能,对接的是 如意验证1.71版苹果cms后端APP 电视TV4.5版, 会员功能带注册邀请,绑定邮箱,邮箱找回密码,修改新密码,卡…

docker-compose 集成Jenkins部署,打包,发布

前言 需要提前准备的条件 1.git 2.Maven环境 3.Docker环境 4.JDK环境(Centos7.4自带JDK环境去除&#xff0c;重装的JDK) 5.Nodejs #前端发布使用一、 jenkins部署 下载镜像 #查询镜像 docker search jenkins#下载镜像 docker pull jenkins/jenkins编写docker-compose.yml …

【音视频开发】基础知识:视频封装格式和编码格式

文章目录 一、封装格式与编码格式的关系视频编码格式视频封装格式MP43GPRM、RMVBAVI、WMVVOBFLVMKVWebMMOVTS 封装格式与编码格式对应 一、封装格式与编码格式的关系 视频编码格式和视频封装格式的关系及区别 这两者的关系好比酒与酒瓶的关系&#xff0c;编码格式好比酒瓶里的…

Scala 从入门到精通

Scala 从入门到精通 scala风格与java风格 public class JavaDemo01 {public static void main(String[] args) {System.out.println("我爱你中国");} }object ScalaDemo01 {def main(args: Array[String]): Unit {println("我爱你中国")} }javac JavaDe…

24.JT-VUE课堂DEMO

<!DOCTYPE html> <html><head><meta charset"utf-8"><title>hello 入门案例</title></head><body><div id"app"><h1>双向数据绑定测试</h1><h3>{{ hello }}</h3></div&…

YOLO环境配置中一些常见的问题

在入门YOLO时&#xff0c;环境配置是绕不过的坎&#xff0c;本文希望通过列举一些常见的问题&#xff0c;帮大家解决一些疑难杂症。然而不同的电脑&#xff0c;环境配置是有差异的&#xff0c;本文不可能面面俱到&#xff0c;大家还是要掌握自己上网查问题、解决问题的能力。 …

easy X(C语言图形化界面)学习

easy X&#xff08;C语言图形化界面&#xff09;学习 易错&#xff1a;头文件创建窗口 图形填充文字创建输出图片鼠标消息函数(老版)鼠标操作&#xff08;新版&#xff09;键盘消息函数getch() 音乐播放修改窗口标题&#xff0c;弹出框框 易错&#xff1a; 1.文件为&#xff0…

DDP学习/PyTorch多GPU训练/查看模型在哪个GPU上

参考&#xff1a; pytorch如何查看tensor和model在哪个GPU上 https://blog.csdn.net/weixin_37889356/article/details/121792888Part 3: Multi-GPU training with DDP (code walkthrough) [pytorch官方教程&#xff0c;有股咖喱味的Inglish, 推荐] https://www.youtube.com/w…

5月14日第壹简报,星期日,农历三月廿五

5月14日第壹简报&#xff0c;星期日&#xff0c;农历三月廿五坚持阅读&#xff0c;静待花开1. 福布斯中国锂电产业链TOP100发布&#xff0c;宁德时代、赣锋锂业、比亚迪等入选。2. 平均降价84%&#xff01;山东、湖南、江西等多地骨科脊柱类耗材集采中选结果落地。3. 世界旅游组…

【CSS系列】第八章 · CSS浮动

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

anylabeling 自动标注 使用记录 (跑不起来你打我)

目录 一、anylabeling 二、Segment Anything模型ONNX导出 1、下载这个项目 2、环境配置 3、下载SAM预训练权重 4、导出ONNX格式 三、yaml文件编写 四、视频讲解 五、使用记录 六、其他 一、anylabeling anylabeling项目地址 我直接用的之前yolov5的conda虚拟环境 p…

vim编辑器常用命令 (Centos)

1 安装vim编辑器 sudo yum update sudo yum install vim2 设置vim 显示行号 (:set nu) 步骤1&#xff1a;按 ESC 键 退出本机内容模式 步骤2&#xff1a;输入 :set number 或者 :set nu 步骤3&#xff1a;按回车 3 查找 / 步骤1&#xff1a;按 ESC 键 退出本机内容模式 步…

设计模式 - 工厂

文章参考来源 一、概念 创建简单的对象直接 new 一个就完事&#xff0c;但对于创建时需要各种配置的复杂对象例如手机&#xff0c;没有工厂的情况下&#xff0c;用户需要自己处理屏幕、摄像头、处理器等配置&#xff0c;这样用户和手机就耦合在一起了。 可以使代码结构清晰&a…

Python进阶知识(2)—— 什么是GUI编程?一起来学习用Python,Tkinter“做画”吧

文章目录 01 | &#x1f4d5; 什么是 G U I &#xff1f; \color{red}{什么是GUI&#xff1f;} 什么是GUI&#xff1f;&#x1f4d5;02 | &#x1f4d9; 什么是 T k i n t e r &#xff1f;为什么是 T k i n t e r &#xff1f; \color{orange}{什么是Tkinter&#xff1f;为什么…

ESP32在linux下烧录,提示权限有问题,解决方法

执行idf.py -p /dev/ttyACM0 flash下载时&#xff0c;提示这个错误 serial.serialutil.SerialException: [Errno 13] could not open port /dev/ttyACM0: [Errno 13] Permission denied: /dev/ttyACM0 解决方法&#xff1a; 1检查串行端口 /dev/ttyUSB0 是否已被其他程序占用…

神经网络的梯度检查

当编写完一个深层的网络时&#xff0c;可能求导方式过于复杂稍微不小心就会出错&#xff0c;在开始训练使用这个网络模型之前我们可以先进行梯度检查。 梯度检查的步骤如下&#xff1a; 然后反向传播计算loss的导数grad&#xff0c;用以下公式计算误差&#xff1a; 通常来说&…

超星学习通小助手多线程工具Python

话不多说&#xff0c;直接开始&#xff0c;不会安转的直接使用后面两款&#xff0c;下载直接打开exe运行 第一款&#xff1a;网课小助手python&#xff0c;需要自行安装Python环境&#xff08;支持Windows、Mac、Linux各种环境&#xff09; https://wwiv.lanzoul.com/ifVrC0vk…

【K8s】控制器

文章目录 一、认识Pod控制器1、控制器介绍2、控制器种类 二、ReplicaSet&#xff08;RS&#xff09;1、RS的作用与资源清单2、创建RS3、pod扩缩容4、镜像升级5、删除RS 三、Deployment&#xff08;Deploy&#xff09;1、作用与资源清单2、创建deploy3、扩缩容4、镜像更新5、版本…

Vite 是如何站在巨人的肩膀上实现的

所谓的巨人&#xff0c;指的就是 Vite 底层所深度使用的两个构建引擎——Esbuild和Rollup。这两个构建引擎对于 Vite 来说究竟有多重要呢&#xff1f;在 Vite 的架构中&#xff0c;这两者各自扮演了什么样的角色&#xff1f;接下来&#xff0c;我们一起拆解 Vite 的双引擎架构&…