微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我想将一个二维数组从 C++ 代码传递给八度函数“imregionalmax”

如何解决我想将一个二维数组从 C++ 代码传递给八度函数“imregionalmax”

我编写了一个 C++ 代码,我在其中读取了一个 CSV 文件并将其存储到一个 2D 数组中,然后将其传递给 Octave 函数 imregionalmax。但是代码给出了分段错误(核心转储)。请帮助我解决这个问题。如果可能,请提供 C++ 代码。我在下面附上我的代码

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

#define ROW 100
#define COL 1000

int main (int argc,char **argv) {

    std::ifstream f;
    f.open ("Mat30.csv");
    if (! f.is_open()) {    /* validate file open for reading */
        std::cerr << "error: file open Failed '" << argv[1] << "'.\n";
        return 1;
    }
    std::string line,val;                  
    std::vector<std::vector<float>> array;

    while (std::getline (f,line)) {        /* read each line */
        std::vector<float> v;                 /* row vector v */
        std::stringstream s (line);         /* stringstream line */
        while (getline (s,val,','))       /* get each value (',' delimited) */
            v.push_back (std::stof (val));  /* add to row vector */
        array.push_back (v);                /* add row vector to array */


    string_vector argv_octave (2);
    argv_octave(0) = "embedded";
    argv_octave(1) = "-q";
    octave_main (1,argv_octave.c_str_vec (),2);

    octave_value_list in1,in2;

    for(octave_idx_type i = 0 ; i < ROW ; i++) {
        for(octave_idx_type j = 0 ; j < COL ; j++)
            in1(j) = octave_value(array[i][j]);
        in2(i) = in1;
    }
    
    // segmentation fault (core dumped) occurs here. Execution is not going further
    octave_value_list out = feval ("imregionalmax",in2,1);
    return 0;
}

我使用的是 ubuntu 18.04,我的机器上安装了 Octave 我通过编写终端来运行代码mkoctfile --link-stand-alone file_name.cpp -o file_name && ./file_name

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。