Armadillo之行向量(row vector)

1 行向量类:定义Row<type>

2 常用的typedef

rowvec = Row<double>
frowvec = Row<float>
cx_rowvec = Row<cx_double>
cx_frowvec = Row<cx_float>
urowvec = Row<uword>
irowvec = Row<sword>

3 创建

rowvec r1 = "1,2,3,4";
rowvec r2 = initializer_list<double>{ 1, 2, 3, 4 };
rowvec r3; //行向量未初始化
r3 << 1 << 2 << 3 << 4;
rowvec r4(r1);
double *elem = new double[4]{1, 2, 3, 4};
rowvec r5(elem, 4); //这个是从elem指针指向的内存中复制元素,所以是安全的
rowvec r6(elem, 4, false);
//这个是直接使用elem指针所指向的内存,所以要保证elem所指向的内存在v6的生命期内有效且不被它人使用
//而且向量的大小不能被直接或间接改变
rowvec r7(elem, 4, false, false);
//这个是直接使用elem指针所指向的内存,所以要保证elem所指向的内存在v6的生命期内有效且不被它人使用
//而且向量的大小可以重新设定,大小重新设定后就不使用elem指向的内存了
vector<double> e = { 1, 2, 3, 4 };
rowvec r8(e);
mat m = "1,2,3,4;";
rowvec r9(m); //如果m不是行向量,将抛出std::logic_error异常
//以上r1,r2...r9都是相同的行向量,都为(1,2,3,4)
 
rowvec r10 = rowvec::fixed<4>();
//创建一个固定大小的行向量,并且只要创建后向量的大小(元素的个数)不可以改变。
//使用固定大小的行向量运算速度快于动态分配的
rowvec r11 = rowvec::fixed<4>("1,2,3,4");
rowvec r12 = rowvec::fixed<4>();
r12 << 1 << 2 << 3 << 4;
//...以此类推,之前使用的几种构造函数都可以使用
//特别要指出向量的初始的填充构造函数
rowvec v13(4); //这个创建一个4个元素的行向量
rowvec v14(4, fill::zeros); //创建一个4个元素的行向量,每个元素都是0
rowvec v15(4, fill::ones); //创建一个4个元素的行向量,每个元素都是1
rowvec v16(4, fill::randu); //创建一个4个元素的行向量,每个元素是[0,1]之间的随机数
rowvec v17(4, fill::randn); //创建一个4个元素的行向量,每个元素都是从一组平均值为0,方差为1的呈正态/高斯分布的随机数

4 行向量的操作

v1.n_cols()  //列数
v1.n_rows()  //行数,恒为1
v1(0)        //访问第0个元素,会检查是否越界,越界会抛出std::logic_error异常
v1[0]    //访问第0个元素,不检查是否越界
v1.clear();  //清空向量,向量变为0*1大小

Armadillo之行向量(row vector)

时间: 2024-08-08 14:33:03

Armadillo之行向量(row vector)的相关文章

【使用MATLAB进行振动模拟】第一章【MATLAB基础】

MATLAB是一种可以进行数值分析和数据可视化的交互式语言,广泛地应用在振动控制工程的分析与设计.各种不同的工具箱使MATLAB扩展到不同领域. 1.1 矩阵生成 矩阵(matrix)是一种按行(row)和列(column)组织的数值的集合. A=[1 2 3 4;5 6 7 8;9 10 11 12] 用撇号(apostrophe)可以对矩阵进行转置(transpose) B=A' 两个整数(integer)间使用冒号(colon)来生成两个整数间的所有整数 a=1:8 会生成行向量(row

Octave 常用命令

GNU Octave 官方文档 GNU Octave Documentation(Online) GNU Octave Documentation(PDF) 安装额外的包 Installing and Removing Packages Octave Forge % 卸载包 pkg uninstall io statistics % 从 Octave Forge 仓库直接安装包 pkg install -forge io statistics % 从本地文件安装包 pkg install io.

高级着色语言简介

HLSL中提供的true和false关键字与C++相同. int:32位有符号整数 half:16位浮点数 float:32位浮点数 double:64位浮点数 float2 float3 float4 分别为 2D 3D 4D向量. 复合分量:(以下为复制操作)不一定要复制每个分量,可以只复制x.y分量. float4 u = {1.0f, 2.0f, 3.0f, 4.0f}; float4 v = {0.0f, 0.0f, 5.0f, 6.0f}; v = u.wyyx; // v = {4

MATLAB新手教程

MATLAB新手教程   1.MATLAB的基本知识 1-1.基本运算与函数    在MATLAB下进行基本数学运算,仅仅需将运算式直接打入提示号(>>)之後,并按入Enter键就可以.比如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上. 小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗

么正矩阵(酉矩阵)

Posted on 09/03/2009 by ccjou 本文的阅读等级:中级 一实(或复) 正交矩阵(orthogonal matrix) 是一个实(或复) 方阵满足 , 即 . 写出 阶实正交矩阵的行向量(column vector) 表达, ,则 ,矩阵乘积 的 元等于 与 的内积. 因此, 若 , 若 . 换句话说,实正交矩阵 的行向量 是向量空间 的一组单范正交基底(orthonormal basis),单范表示归一, 是单位向量,正交意味 垂直 . 不过,复正交矩阵的行向量并非 的

线性代数 -- Linear Algebra with Applications

@.如果线性方程组无解,则称该方程组是不相容的(inconsistent). @.如果线性方程组至少存在一个解,则称该方程组是相容的(consistent). @.等价方程组(equivalent systems). @.定义:若两个含有相同变量的方程组具有相同的解集,则称它们是等价的(equivalent). @.得到等价的方程组: 1.交换任意两个方程的顺序. 2.任一方程两边同乘一个非零的实数. 3.任一方程的倍数加到另一方程上. @.定义:若方程组中,第k个方程的前k-1个变量的系数均为

Matlab基础

MATLAB入门教程   1.MATLAB的基本知识 1-1.基本运算与函数    在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可.例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上. 小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统

(转)MATLAB入门教程

MATLAB入门教程   1.MATLAB的基本知识 1-1.基本运算与函数    在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可.例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上. 小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统

MATLAB新手入门教程

MATLAB入门教程   1.MATLAB的基本知识 1-1.基本运算与函数    在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可.例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上. 小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统