Matlab中叉乘和点乘的区别与其在冒号表达式中“标量化”的应用
先说结论:叉乘用于《线性代数》中的矩阵运算,得到的是一个矩阵;点乘用于《高等数学》中的数值/数字运算,得到的是一个数。注意运用就是冒号表达式在高等数学计算中的运用。
下面具体介绍。
叉乘和点乘的具体定义和应用,在各种搜索引擎中都是可以查询到,在这里不再过多的赘述。这里着重介绍的是两者之间的区别和应用。
下面先看看两个例子:
创建两个3×3的两个向量A、B,具体如下:
A = B =
1 2 3 1 2 3
4 5 6 1 2 3
7 8 9 1 2 3
叉乘运算: 点乘运算:
A*B= A.*B=
6 12 18 1 4 9
15 30 45 4 10 18
24 48 72 7 16 27
通过对应位置的对比可以得到:
叉乘结果的元素是是符合线代运算的,是相应行、列的互相作用的结果;点乘的结果是对应位置的乘积,是相对应两个位置的独立作用的结果。由此我们来进行深入分析。
在MATLAB中,严格来说是没有《高等数学》中数字的含义的,只是将一个数字命名为了一个特殊的数组或者是矩阵。在运算中这里非常容易出错。例如运用非常广泛的冒号表达式,其本质上也是一个矩阵。
>> a=1:1:5
a =
1 2 3 4 5
>> whos a
Name Size Bytes Class Attributes
a 1x5 40 double
我们可以通过whos命令来查看它的性质。
但是,在MATLAB中有很大一部分的计算是在将数组或者矩阵中的元素进行标量化运用。如果说,我们在运用的过程中,在这里不注意的话,MATLAB会报错,得不到结果。举例如下:
>> x=linspace(0,2*pi,100); %效果等同于x=0:2*pi:100
>> y=sin(x);
>> plot(x,y)
>> title('sin函数图像')
得到的结果如下图:
但是如果改变成下面的函数:
>> y1=sin(x)*cos(x);
plot(x,y1)
title('sin*cos函数图像')
会发现无法执行,MATLAB返回下面的建议:
错误使用 *
用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要执行按元素相乘,请使用 '.*'
改变为:y1=sin(x).*cos(x)后得到下面的结果
从这两个例子上就可以发现,在直接运用乘法的时候是无法进行的。最主要的原因就是在定义x的时候,采用的冒号表达式生成的,其本质是一个数组,叫一个矩阵也是一样。对数组或者矩阵中的元素进行标量化运算,必须采用的点乘。其实也是在告诉MARLAB,这个运算我要用《高等数学》的方法,《线性代数》统统闪开。
其实从这个例子,我们可以对点乘运用扩大化,经验总结如下(有误的话,还请见谅):
在采用冒号表达式定义的未知数的状态下,想进行标量形式的运算的话,只有加减不用点运算,除此之外的所有运算全部采用点运算。
部分运算格式如下:
运算法则 |
MATLAB中形式变化 |
除法 |
a./b |
乘法 |
Sin(x).*cos(x) |
次幂 |
a.^b=ab |
例1、
在MATLAB中表示为:y=x.^2./(5+x);
例2、
在MATLAB中表述如下:f=sqrt(x.^2+y.^2)+eps;
第一次写文章,如有不妥之处,望请见谅!!!
Matlab中叉乘和点乘的区别与其在冒号表达式中“标量化”的应用相关推荐
- python中for循环和while循环的区别_浅谈python中的while循环
python中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环:for循环的时候必须有一个可迭代的对象,才能循环,比如说 列表.字典.字符串等 ...
- MATLAB学习【第五部分】--第一节:矩阵的输入//冒号表达式矩阵---linspace函数生成向量---一般矩阵输入
矩阵的输入 一般矩阵的输入 []建立矩阵,在一行内各数值之间可用空格或者逗号隔开,行与行之间用分号隔开 一:A=[1,2,3;4 5 6;7,8,9];//一般采用逗号隔开 二:A=[1 2 3 ...
- hibernate validate验证框架中@NotEmpty、@NotbBank、@NotNull的区别
Hibernate Validator验证框架中@NotEmpty.@NotBlank.@NotNull 的区别 Hibernate Validator验证框架中@NotEmpty.@NotBlank ...
- 编译器说 Lambda 表达式中的变量必须是 final 的,我偏不信 | 原力计划
作者 | 沉默王二 来源 | CSDN博客专家 出品 | CSDN(ID:CSDNnews) 偶尔,我们需要在 Lambda 表达式中修改变量的值,但如果直接尝试修改的话,编译器不会视而不见听而不闻, ...
- Python中NaN、nan和NAN的区别及使用方法
Python中NaN.nan和NAN的区别及使用方法 Python中的NaN(Not a Number)是一个特殊的浮点数值,用于表示非数值型计算结果或无限大的运算结果,常用于科学计算.数据分析等领域 ...
- python新式类和经典类区别_Python中新式类和经典类的区别,钻石继承
1)首先,写法不一样: class A: pass class B(object): 2)在多继承中,新式类采用广度优先搜索,而旧式类是采用深度优先搜索. 3)新式类更符合OOP编程思想,统一了pyt ...
- java字段是什么意思_Java中的属性和字段有什么区别
Java中属性和字段的区别: 1. Java中的属性,通常可以理解为其属名性时根据get和set方法名得出的. 其规则是: 去掉get或set后其剩余的字符串,如果第二个字母是小写的,则把第一个字母也 ...
- “输入字符不是 MATLAB 语句或表达式中的有效字符”的解决办法
写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 问题描述: 输入字符不是 MATLAB 语句或表达式中的有效字符 原因分析: 标点符号:采用了中文的标点符号 解决方案: ...
- MATLAB中符号运算和数值运算的区别
两者的根本区别是 : 数值计算的表达式.矩阵变量中不允许有未定义的自由变量 , 而符号计算可以含有未定义的符号变量.对于一般的程序设计软件如 C, C + + 等语言实现数值计算还可以 , 但是实现符 ...
最新文章
- 如何阅读 Vivado中的Timing Report
- tensorflow练习
- Visual Studio 2010 Ultimate敏捷测试驱动开发
- python爬虫之selenium,谷歌无头浏览器
- deb和rpm文件安装
- 程序员面试100题之三:不用+、-、×、÷数字运算符做加法
- mysql 导出 没有函数_没有MYSQL FILE函数的CSV导出
- vmware安装问题:Microsoft Runtime DLL安装程序未能完成安装
- 进入hbase shell速度很慢_HBase——大数据平台之分布式NoSQL数据库教程
- 蓝桥杯2014c++真题:扑克序列(next_permutation)
- linux系统安装详细教程
- php日记源码,留言日记 - PHP源码 - 源码下载
- FPGA编程入门:Quartus II 设计1位全加器
- 阿里云对象存储OSS是怎么收费的?
- Linux 配置Host
- cloc工具 命令行 统计代码行数
- 电脑如何在线制作文件二维码?二维码怎么下载文件?
- 一个男朋友写给女朋友的信.爆笑(真勇敢)
- 图像的仿射变换:cv2.warpAffine()
- 如何用计算机打出下划线,哪位可以告诉我在电脑上怎么打下划线
热门文章
- SQL将查询结果合并到一个字段中并使用,分割,不使用GROUP_CONCAT和FOR XML PATH(‘‘)与存储过程
- Java中List排序去重、排序的3种方式
- 瀑布式开发和敏捷式开发
- 微信小程序 实现canvas按照原图等比例不失真绘制海报图并保存海报图片到本地相册
- 如何利用空闲玩转咸鱼
- 在ubuntu中下载迅雷链接(thunder://)
- 独热码(one-hot-enconding)的理解以及编码与解码
- 成功源于自信!相信自己。下边每个字都是价值不菲,你认真看了吗?
- unity怎么引入命名空间_Unity寻路网络组件需要使用引用哪个命名空间()?
- 安装SQL Server提示“重叠的IO操作正在进行”解决