function - Maxima:如何区分矩阵的行和行向量?
问题描述
我想构建一个可以将向量(即 1xm 或 nx1 矩阵)或矩阵的列/行作为输入的函数;然而,我想出了一些看起来有点奇怪的东西:即使 maxima 将向量作为具有 1 行或 col 的矩阵处理,它对引用它们的元素有不同的要求。
例如:
aMatrix:matrix([1,2,3],[4,5,6]);
matrixVec: aMatrix[1];
aVec:matrix([1,2,3]);
现在,即使matrixVec
andaVec
是 a) 从matrix
函数获得的,并且具有相同的维度(由length()
and确定length(transpose())
,引用它们的元素需要完全不同的符号:
matrixVec[1,1];
返回错误;而aVec[1,1];
返回 1,正如预期的那样。
我想我明白为什么会这样;但是,因为这两个对象都true
从matrixp
(并且具有相同的尺寸)返回,所以我不知道如何在我的代码中区分它们,以便我可以定义正确的处理方式。
我可以使用什么样的 if 语句来区分这两者,以便我可以value = x[i]
为矩阵和value = x[1,i]
行向量定义?
解决方案
在处理其他事情时偶然发现了一个解决方案:事实证明,Maxima 将矩阵的行或列视为列表,尽管它不将行或列向量视为列表,即给定
aMatrix : matrix([1,2,3],[4,5,6]);
matrixVec : aMatrix[1];
aVec : matrix([1,2,3]);
listp(matrixVec)
返回“真”,而listp(aVec)
返回“假”。
ielistp()
可用于将 1xm 或 nx1 矩阵与矩阵的行或列区分开来。
推荐阅读
- karate - 在 url 中传递变量 - 空手道
- javascript - RabbitMq 与 reactJS
- postgresql - 是什么决定了将大查询粘贴到 psql 中的限制?
- android - 如何为自定义吐司布局设置主题?
- python - 在 Windows 中终止使用 shell=True 启动的后台进程
- angularjs - 指令控制器中的AngularJS表单属性
- apache-spark - PySpark:完全清理检查点
- angular - Angular Protractor 未检测到渲染的组件标签
- python - 将 SciPy 稀疏矩阵转换为 numpy 数组时出错:“数组太大”
- vue.js - 不需要提交突变的 vuex 操作