C++ 倍频程C++;API(feval)-如何将多个参数传递给feval?
环境:Windows 7 Professional+octave 3.6.2+Visual C++ <>我试图把八度码嵌入到一个独立的C++程序中,根据教程: 我设法毫无问题地运行了第一个程序,但第二个程序给出了错误消息 第二个程序的简化版本:C++ 倍频程C++;API(feval)-如何将多个参数传递给feval?,c++,visual-studio-2010,octave,C++,Visual Studio 2010,Octave,环境:Windows 7 Professional+octave 3.6.2+Visual C++ 我试图把八度码嵌入到一个独立的C++程序中,根据教程: 我设法毫无问题地运行了第一个程序,但第二个程序给出了错误消息 第二个程序的简化版本: int main (void) { string_vector argv (2); argv(0) = "embedded"; argv(1) = "-q"; octave_main (2, argv.c_str_vec()
int main (void)
{
string_vector argv (2);
argv(0) = "embedded";
argv(1) = "-q";
octave_main (2, argv.c_str_vec(), 1);
Matrix a_matrix = Matrix (1, 2);
std::cout << "GCD of [12, 16] is ";
a_matrix(0)=12;
a_matrix(1)=16;
octave_value_list in = octave_value (a_matrix);
octave_value_list out = feval ("gcd", in, 1);
std::cout<<out(0).matrix_value()<<std::endl;
return 0;
}
int main(无效)
{
字符串向量argv(2);
argv(0)=“嵌入式”;
argv(1)=“-q”;
主八度音程(2,argv.c_str_vec(),1);
矩阵a_矩阵=矩阵(1,2);
std::cout好吧,我刚才做了如下替换:
//octave_value_list in = octave_value (a_matrix);
octave_value_list in;
for (octave_idx_type i = 0; i < n; i++)
in(i) = a_matrix (i);
//倍频程值列表in=倍频程值(一个矩阵);
倍频程值列表中;
对于(倍频程i=0;i
它是有效的…但我得到了一个jre错误。结果表明,直接将倍频程值列表作为输入,而不是将矩阵转换为倍频程值列表,使用倍频程值,效果很好。(也许倍频程值是罪魁祸首?)
因此,倍频程3.6.2下的工作代码如下:
int main (void)
{
string_vector argv (2);
argv(0) = "embedded";
argv(1) = "-q";
octave_main (2, argv.c_str_vec(), 1);
std::cout << "GCD of [12, 16] is ";
// Use octave_value_list directly as input
octave_value_list in(2);
in(0)=12;
in(1)=16;
octave_value_list out = feval ("gcd", in, 1);
std::cout<<out(0).int_value()<<std::endl;
return 0;
}
int main(无效)
{
字符串向量argv(2);
argv(0)=“嵌入式”;
argv(1)=“-q”;
主八度音程(2,argv.c_str_vec(),1);
在这种情况下,“n”是什么?获取一个JRE错误如何算作“工作”?为了完整起见,您不应该调用octave_exit吗?