Matalb符号矩阵输入BUG
来源:互联网 发布:mac mysql忘记root密码 编辑:程序博客网 时间:2024/05/30 05:28
最近有位童鞋问笔者下面两段Matlab代码执行结果为啥不一样
代码1
x=sym('[0 1;-1 0]')y=sym('[1 -1;-2 1]')x*y代码2
syms x ysubs(x*y,{x,y},{[0 1;-1 0],[1 -1;-2 1]})
代码1执行结果
x = [ 0, 1][ -1, 0] y = [ 0, 0][ -2, 1] ans = [ -2, 1][ 0, 0]
代码2执行结果
ans = 0 -1 2 0笔者的解释是第一个是符号矩阵的乘法,符合高等数学高等代数中的矩阵乘法运算,第二个是属于数组运算,即矩阵对应位置做乘法
但是问题了来了,第一个真的是矩阵乘法的结果吗,笔者又写了一个代码来验证
代码3
A=[0 1;-1 0]B=[1 -1;-2 1]A*BA.*B代码3执行结果
A = 0 1 -1 0B = 1 -1 -2 1ans = -2 1 -1 1ans = 0 -1 2 0仔细一看,符号矩阵运算的结果与实际不符,再仔细查查,可以看到代码1中的矩阵存储的时候居然变化了。。。。
经过测试,符号矩阵转换的时候优先识别成表达式了,不足的列自动补0,列数与最后一行的列数有关,为了不使符号函数误解成表达式,应尽量避免用空格分割行元素,建议采用逗号分割
下面的代码是做测试的
代码4
syms a11 a12 a13 a21 a22 a23x=sym('[1 -a12;-2 1]')y=sym('[1 -a12;-2 -a22]')z=sym('[1 -a12 -a13;-2 -a22 -a23]')z2=sym('[1 -a12 -a13;-2 -a22 a23]')z3=sym('[1 -a12 -a13;-2 a22 a23]')z4=sym('[1 -a12 a13;-2 a22 a23]')sym('[1 -3;-2 -6]')代码4执行结果
x = [ 1 - a12, 0][ -2, 1] y = 1 - a12 - a22 - 2 z = 1 - a13 - a12 - a22 - a23 - 2 z2 = [ 1 - a13 - a12, 0][ - a22 - 2, a23] z3 = [ 1 - a13 - a12, 0, 0][ -2, a22, a23] z4 = [ 1 - a12, a13, 0][ -2, a22, a23] ans = -2 -8下面代码将代码1中的空格改成逗号,就能得到正确的结果了
代码5
x=sym('[0,1;-1,0]')y=sym('[1,-1;-2,1]')x*y代码5执行结果
x = [ 0, 1][ -1, 0] y = [ 1, -1][ -2, 1] ans = [ -2, 1][ -1, 1]由于数值矩阵的空格在matlab中不会引起误解,所以也可以先定义数值矩阵,然后转成符号矩阵
代码6
A=[0 1;-1 0]B=[1 -1;-2 1]x=sym(A)y=sym(B)x*y代码6执行结果
A = 0 1 -1 0B = 1 -1 -2 1 x = [ 0, 1][ -1, 0] y = [ 1, -1][ -2, 1] ans = [ -2, 1][ -1, 1]
0 0
- Matalb符号矩阵输入BUG
- Matalb中特殊矩阵
- matalb | || ~ & &&
- Matalb for 语句 操作大矩阵 优化
- MATALB中数组、矩阵、向量、行列式的关系
- 输入矩阵
- scim的符号输入
- 输入版权符号©
- 怎么输入版权符号
- TeX-符号输入收集
- excel符号输入方法
- 【bug】opencv 矩阵操作
- flex arcgis server 符号bug
- matalb ann
- sym--数值矩阵转为符号矩阵
- 矩阵快速幂+符号重载。
- 符号矩阵代入数据求值
- factor--符号矩阵的因式分解
- jvm对象创建以及类的加载
- iOS 中函数和方法的区别
- Unity4.x升级5.0出现的32位dll问题
- Tomcat配置(备忘)
- RelativeLayout 显示、隐藏、移除
- Matalb符号矩阵输入BUG
- 【Cocos2d-x】3.6 Android环境搭建
- 多线程代码
- Oracle ORA-28001: the password has expired
- android之3g调试1
- 欢迎使用CSDN-markdown编辑器
- [NOIP2009][spfa]最优贸易
- StormDRPC 概念以及简单例子测试
- C++中的static关键字的总结