在armadillo C++中获取矩阵类型变量的键盘输入
Taking Keyboards inputs for matrix type variables in armadillo C++
我无法通过键盘输入来设置用armadillo库定义的向量或矩阵类型变量的值。这是我正在使用的代码。
#include <iostream>
#include "armadillo"
using namespace arma;
using namespace std;
int main()
{
vec mu1;
cin>> mu1;
return 0;
}
我收到以下错误消息
"E:\cpp\hell\mvnsamp.cpp|18|错误:与"operator>>"不匹配(操作数类型为"std::istream{aka std::basic_istream}"answers"arma::vec{akaarma:::Col}")"
尝试使用cin>>mu1(i)逐个输入值。我还尝试将输入作为数组然后将这些元素分配给mu1。
float arr[20]={};
for(int i=0;i<5;i++)
{
cin>> arr[i];
}
mu1(0)=arr[0];
这在输出窗口中出现错误
"error:Mat::operator():在抛出std::logic error what():Mat::operator:():index越界的实例后调用的索引越界终止"。
每当我尝试一个涉及左手边子矩阵的任务时,我都会遇到类似的问题。例如:
B.row(1)=A
我想知道是否可以通过键盘为矩阵/矢量类型赋值。此外,是否可以使用简单的赋值将值设置为mat类型的子矩阵。
Armadillo中的向量和矩阵通常需要具有非零大小,然后才能将元素放入其中。您可以在构造矩阵期间设置大小,也可以使用.set_size()或使用.zeros().
将您的代码更改为:
int main()
{
vec mu1(10, fill::zeros);
for(int i=0; i<10; i++)
{
double tmp;
cin >> tmp;
mu1(i) = tmp;
}
mu1.print("mu1:");
return 0;
}
请注意,从用户界面的角度来看,使用cin
通常是不好的。相反,您可能希望将所有矩阵或向量值存储在文本文件中,然后加载文本文件。例如,假设我们有一个名为A.txt
的文本文件,其中包含:
0.0 1.0 2.0 3.0
4.0 5.0 6.0 7.0
然后,您可以在Armadillo中加载文件,使用:
mat A;
A.load("A.txt");
相关文章:
- 从模板创建通用打印函数,以打印基元数据类型变量的值
- 指针数据类型变量如何包含对象?
- 将 static_cast<int>(-15) 分配给静态常量字符类型变量
- 将内置类型变量传递给只有一个类类型参数的"+"运算符函数时自动类型转换的构造函数
- 如何为结构类型变量赋值
- 如何将字符类型变量附加到字符串中?
- 共享或私有 openmp 代码中的结构化类型变量
- 有没有办法在 c++ 中制作类型变量?
- 从其他类声明类类型变量会给出 C2143 错误(在"*"之前缺少";")
- 如何检查类中定义的枚举类型变量是否被分配给?
- 将子类实例保存在父类型变量中并通过父变量使用 Child 函数?
- 是否可以在没有结构的情况下创建新的类型变量?
- 区分键盘记录器中的密码和其他类型的键盘输入
- 为什么类型变量;不调用默认 CTR
- 如何使用CIN将输入整数值获取到char类型变量中
- 如何为 char** 类型变量提供适当的值,以便将其分配给字符串变量
- 在C++标准中哪里说必须初始化 const 内置类型变量的定义
- 为什么可以将其他类型变量用作C 中常量参考参数参数的参数
- Eclipse CDT 打开声明的自动类型变量
- 在armadillo C++中获取矩阵类型变量的键盘输入