使用Octave内置函数mldivide在c++ API
Using Octave built-in function mldivide in C++ API
我正在用c++编程,想要使用Octave中强大的内置函数。我遵循了Octave网站上的独立程序指南。我可以运行函数规范(在c++中称为Fnorm)与示例代码成功。现在我想用函数mldivide来解一个线性方程。
#include <iostream>
#include <octave/oct.h>
#include <octave/builtin-defun-decls.h>
octave_value_list input;
octave_value_list retval;
int main (void) {
Matrix A(4,4);
for (octave_idx_type i = 0; i < 4; i++)
for (octave_idx_type j = 0; j < 4; j++)
A(i,j) = 1.0 / (static_cast<double> (i) +static_cast<double> ( j ) + 1.0 ) ;
ColumnVector b(4,1.0);
input.append(A);
input.append(b);
retval=Fmldivide(input);
ColumnVector x =retval(0).column_vector_value();
std::cout << "A = " << std::endl << A << std::endl
<< "b = " << std::endl << b << std::endl
<< "x = " << std::endl << x << std::endl;
return 0;
}
但有以下错误。
main.cpp: In function 'int main()':
main.cpp:23:26: error: invalid initialization of reference of type 'const octave_value_list&' from expression of type 'Matrix'
In file included from main.cpp:3:0:
/usr/local/octave/3.8.0/include/octave-3.8.0/octave/../octave/builtin-defun-decls.h:198:1: error: in passing argument 1 of 'octave_value_list Fmldivide(const octave_value_list&, int)'
任何想法吗?
这不起作用有两个原因:
-
Fmldivide
以octave_value_list
为输入 -
Fmldivide
返回octave_value_list
,但您声明的是ColumnVector
你可以通过:
-
将您的输入转换为单个
octave_value
,并将转换为octave_value_list
留给编译器: Fmldivide (octave_value (b), 1); 使用
do_binary_op
左除法运算符:do_binary_op (octave_value:: op_ldiv b 1);
您可以使用column_vector_value
方法来修复第二个问题:
-
如果你使用
Fmldivide
,你得到一个列表,所以你必须先索引第一个元素:ColumnVector x = Fmldivide (b, 1)(0)。column_vector_value ();
-
如果你使用
do_binary_op
,你将得到一个octave_value
,所以索引是不必要的:ColumnVector x = do_binary_op (octave_value::op_ldiv, b, 1).column_vector_value ();
相关文章:
- 用于访问容器<T>数据成员的正确 API
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++MySQL C api用户输入行
- 如何使用 AWS Transcribe C++ API 中的'StartTranscriptionJobRequest'?
- 将std::string传递给WriteConsole API
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 在gtest.中使用fff.h模拟系统API
- 有没有任务栏API可以立即应用注册表更改
- C++win32 API创建多个类似视口的窗口
- 使用libcurl提交批量url的正确BING Api POST url是什么
- 如何将真正的字符串从python c-api转换为python脚本
- 使用Qt框架在c ++类中创建API调用
- Libreoffice API (UNO):需要更改用户的 xTextField 文本
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- 使用 Python Extension API 包装复杂C++类
- 如何使用 samtools C API 构建一个简单的主.cpp文件
- 第三方 API 中的编译错误 - Visual Studio
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- clang 的 libFuzzer 可以在同一二进制文件中测试超过 1 个 API 吗?
- Issues with Win32 ReadProcessMemory API