Octave API C++ Ubuntu 程序紧急停止

问题描述 投票:0回答:1

我是 API 主题的新手。 你能告诉我程序崩溃的原因吗?我究竟做错了什么?我在 Ubuntu 中工作。八度 6.4.0

#include <iostream>
#include <octave/oct.h>
#include <octave/octave.h>
#include <parse.h>
#include <interpreter.h>

using namespace std;

int main() {

    // Создание матрицы
    Matrix mat(2, 3);
    mat(0, 0) = 1;
    mat(0, 1) = 2;
    mat(0, 2) = 3;
    mat(1, 0) = 4;
    mat(1, 1) = 5;
    mat(1, 2) = 6;

    // Вывод исходной матрицы
    cout << "Исходная матрица:" << endl << mat << endl;

    // Транспонирование матрицы
    octave_value_list in, out;
    in(0) = mat;
    out = octave::feval("transpose", in, 1);

    // Получение транспонированной матрицы из выходного списка значений
    Matrix transposed_mat = out(0).matrix_value();

    // Вывод транспонированной матрицы
    cout << "Транспонированная матрица:" << endl << transposed_mat << endl;

    return 0;
}

这是我的汇编:

g++ -o 2 2.cpp -I/usr/include/octave-6.4.0 -I/usr/include/octave-6.4.0/octave -I/usr/include/octave-6.4.0/octave/interpreter -I/usr/include -I/usr/include/octave-6.4.0/octave -loctave -loctinterp -Wl,-rpath,/usr/lib/x86_64-linux-gnu/octave/6.4.0 -L/usr/lib/x86_64-linux-gnu/octave/6.4.0 -Wl,--no-as-needed -loctave -loctinterp

在没有手册的情况下很难理解 API 的主题(没有找到它们),但到目前为止我只是尝试编写线性方程组的解决方案(得到它并且它有效)。 如果编译有问题请指教。

c++ ubuntu octave
1个回答
0
投票

我的猜测是异常发生在这一行:

octave_value_list in;
in(0) = mat;

octave_value_list
非常类似于
std::vector<>
。在这里,您声明一个空列表,然后尝试将某些内容分配给第一个元素,但该元素不存在。

您可以通过以下三种方式之一修复此代码:

octave_value_list in(1); // declare it with the right size
in(0) = mat;

octave_value_list in;
in.append(mat); // append to the list

octave_value_list in(mat); // put the array in the list upon creation
© www.soinside.com 2019 - 2024. All rights reserved.