gpt4 book ai didi

C++ 时间库和 Octave .oct 文件

转载 作者:太空宇宙 更新时间:2023-11-04 12:54:37 26 4
gpt4 key购买 nike

我正在尝试编写一个使用 linasm-1.13 library 的 Octave C++ .oct 函数但我似乎无法从/usr/share/zoneinfo/获得基本的 tzdata 加载来工作。到目前为止,我的简单测试功能是

#include <octave/oct.h>
#include <Time.h> // the linasm-1.13 library

DEFUN_DLD ( tz, args, nargout,
"-*- texinfo -*-\n\
@deftypefn {Function File} {} tz (@var{YYYYMMDDHHMMSS})\n\
\n\
@end deftypefn" )

{
octave_value_list retval_list ;
unsigned int tz ;

const char *ny_time = "/usr/share/zoneinfo/America/New_York" ;

tz = Time::LoadTimeZone( ny_time ) ;

return retval_list ;

在使用 mkoctfile 编译时,出现此错误

>> mkoctfile tz.cc
tz.cc: In function ‘octave_value_list Ftz(const octave_value_list&, int)’:
tz.cc:24:34: error: cannot call member function ‘unsigned int Time::LoadTimeZone(const char*)’ without object
tz = Time::LoadTimeZone( ny_time ) ;
^
warning: mkoctfile: building exited with failure status

我对此的理解是 ny_time 不是可识别的对象,但我已尝试将 ny_time 转换为字符串文字,详见 this accepted SO answer .

我这样做是因为 LoadTimeZone 的输入根据 linasm page应该是“tzfile 的路径,它描述了所需的时区”。我哪里错了?

最佳答案

我认为您还必须#include "source.cc" 文件,而不仅仅是#include "header.h" 文件。在您的情况下,我想您应该添加:#include "Time.cc" 或类似的内容。我不知道为什么,但这在使用 Rafat's Hussain wavemin library 时对我有用, 但我只有 4 个文件,如果有很多文件,一定会非常乏味。

这就是我所做的(它是 Rafat 及其库提供的测试代码的修改版本)。

#include "wavemin.h"
#include "waveaux.h"
#include "wavemin.cc"
#include "waveaux.cc"
#include <octave/oct.h>

double ensayo();
double absmax(double *array, int N);

DEFUN_DLD(helloctave2, argv, , "Usage: hello()"){

wave_object obj;
wt_object wt;
double *inp, *out, *diff;
int N, i, J;
char *name = "db4";
obj = wave_init(name);// Initialize the wavelet
N = 14; //Length of Signal
inp = (double*)malloc(sizeof(double)* N); //Input signal
out = (double*)malloc(sizeof(double)* N);
diff = (double*)malloc(sizeof(double)* N);
//wmean = mean(temp, N);
for (i = 0; i < N; ++i) {
inp[i] = i;
}
J = 1; //Decomposition Levels
wt = wt_init(obj, "dwt", N, J);// Initialize the wavelet transform object
setDWTExtension(wt, "sym");// Options are "per" and "sym". Symmetric is the default option
setWTConv(wt, "direct");
dwt(wt, inp);// Perform DWT
//DWT output can be accessed using wt->output vector. Use wt_summary to find out how to extract appx and detail coefficients
for (i = 0; i < wt->outlength; ++i) {
octave_stdout << wt->output[i];
octave_stdout << "\n";
}

idwt(wt, out);// Perform IDWT (if needed)
// Test Reconstruction
for (i = 0; i < wt->siglength; ++i) {
diff[i] = out[i] - inp[i];
}

octave_stdout << absmax(diff, wt->siglength);
octave_stdout << "\n";

octave_value_list retval;

return retval;
}

double
absmax(double *array, int N) {
double max;
int i;
max = 0.0;
for (i = 0; i < N; ++i) {
if (fabs(array[i]) >= max) {
max = fabs(array[i]);
}
}
return max;
}

关于C++ 时间库和 Octave .oct 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47105198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com