A.1.2 Oct文件中的矩阵和数组

Octave支持许多不同的数组和矩阵类,其中大多数基于数组类例外情况是下面单独讨论的稀疏矩阵型。有三种基本矩阵类型:

矩阵

中定义的双精度矩阵类d矩阵.h

广告
ComplexMatrix

中定义的复杂矩阵类C矩阵.h

广告
布尔矩阵

中定义的布尔矩阵类boolMatrix.h

广告

这些是Octave的基本二维矩阵类型。此外,还有许多多维数组类型,包括

NDArray

中定义的双精度数组类dNDArray.h

广告
ComplexND数组

中定义的复杂数组类CNDArray.h

广告
boolNDArray

中定义的布尔数组类boolNDArray.h

广告
int8NDA数组
int16ND数组
int32ND数组
int64ND数组

中定义的8、16、32和64位带符号数组类int8NDArray.h, int16NDArray.h

广告
uint8NDA数组
uint16ND数组
uint32NDArray
uint64ND数组

中定义的8、16、32和64位无符号数组类uint8NDArray.h, uint16NDArray.h

广告

构造矩阵或多维射线有几种基本方法。使用类矩阵作为一个例子,可以

这些类型都共享一些基本方法和运算符。许多都与解释器中存在的函数有关。一系列有用的方法包括

Method: T& operator () (octave_idx_type)
Method: T& elem (octave_idx_type)

这个()运算符或elem方法允许读取或设置矩阵或数组的值。这些方法只接受一个类型为的参数Octaveidx_type,即矩阵或数组的索引。此外,矩阵类型允许的两个参数版本()运算符和elem方法,给出要获取或设置的值的行和列索引。

广告

请注意,这些函数会进行重要的错误检查,因此在某些情况下,用户可能更喜欢直接通过fortran_vec方法如下所述。

Method: octave_idx_type numel () const

矩阵或数组中元素的总数。

广告
Method: size_t byte_size () const

用于存储矩阵或数组的字节数。

广告
Method: dim_vector dims () const

类型的值中的矩阵或数组的维度dim_vector.

广告
Method: int ndims () const

矩阵或数组的维数。矩阵总是二维的,但数组可以是N维的。

广告
Method: void resize (const dim_vector&)
Method: void resize (nrows, ncols)

一种方法,采用类型为的参数之一dim_vector,或者,在矩阵的情况下,两个类型为的参数Octaveidx_type定义矩阵中的行数和列数。

广告
Method: T * fortran_vec ()

此方法返回一个指向矩阵或数组的底层数据的指针,以便可以在Octave内或外部库中直接操作它。

广告

运算符,如+, -*可用于大多数矩阵和数组类型。此外,还有许多方法只对矩阵感兴趣,例如转置, 隐士,解决

从的输入自变量中提取矩阵或数组的典型方法defon_DLD函数如下

#include<octave/oct.h>DEFUN_DLD(添加两个矩阵,args,“将A添加到B”){if(args.length()!=2)print_usage();NDArray A=args(0).array_value();NDArray B=args

为了避免分段错误导致Octave中止,此函数明确地在访问这些参数之前检查是否有足够的参数可用。然后它获得两个类型为的多维数组NDArray并将这些添加在一起。请注意数组_值方法,而不使用is_matrix_type方法如果在尝试提取值时发生错误,Octave将打印一条消息并抛出异常。更喜欢这种编码结构体的原因是,参数可能是一种类型,而不是NDArray,但将它们转换为一个是有意义的。这个数组_值方法允许在可能的情况下透明地执行此转换。如果您需要捕获这样的错误,并执行某种清理或其他操作,则可以取消捕获Octave执行错误例外

A+B,操作两个NDArray对象返回NDArray,它被强制为Octave值在函数返回时。此演示函数的使用示例如下

加两个矩阵(一(2,2),eye(2,2中))⇒  2  1          1  2

基本的列表矩阵数组类型,从中提取这些的方法Octave值,相关联的头文件如下所示。

类型 作用 源代码
RowVector row_vector_value dRowVector.h
ComplexRowVector complex_row_vector_value CRowVector.h
ColumnVector column_vector_value dColVector.h
ComplexVolume Vector complex_column_vector_value CColVector.h
矩阵 矩阵_值 d矩阵.h
ComplexMatrix complex_matrix_value C矩阵.h
布尔矩阵 布尔矩阵值 boolMatrix.h
charMatrix char_matrix_value chMatrix.h
NDArray 数组_值 dNDArray.h
ComplexNDArray complex_array_value CNDArray.h
boolNDArray bool_array_value boolNDArray.h
charNDArray char_array_value charNDArray.h
int8NDA数组 int8_array_value int8NDArray.h
int16ND数组 int16_array_value int16NDArray.h
int32ND数组 int32_array_value int32NDArray.h
int64ND数组 int64_array_value int64NDArray.h
uint8NDA数组 uint8_array_value uint8NDArray.h
uint16ND数组 uint16_array_value uint16NDArray.h
uint32NDArray uint32_array_value uint32NDArray.h
uint64ND数组 uint64_array_value uint64NDArray.h

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2