Tag: matlab

C99相当于MATLAB“filter”?

为什么MATLAB和C版本会产生不同的结果? MATLAB: [B_coeffs, A_coeffs ] = butter(4, 100/(16000/2), ‘high’); state = zeros( 4, 1 ); input = zeros( 64,1 ); for i=1:64 input(i)=i; end [filtered_output, state] = filter( B_coeffs, A_coeffs, input, state ); C: int main(…) { for(int test=0; teststate[0], z1 = hpf->state[1], z2 = hpf->state[2], z3 = hpf->state[3]; unsigned int N = 64; unsigned […]

在Windows上编译Felzenszwalb VOC时出现Matlab Mex32链接错误

我正在用Matlab编译一个C文件( voc-release库的一部分),我收到下面的错误。 我似乎无法解决它。 谁能告诉我是什么原因导致这个错误以及我能做些什么呢? mex -O features.cc 为features.mexw32编写库 c:\ users \ safaa \ appdata \ local \ temp \ mex_ty~1 \ features.obj .text:未定义引用’_round’ C:\ PROGRA~1 \ MATLAB \ R2009A \ BIN \ MEX.PL:错误:’features.mexw32’的链接失败。

如何使用C中的函数生成随机数组

我试图将程序从Matlab移植到C,以便改善执行时间和内存使用。 由于C中没有生成0和1统一填充数组的函数(或者我找不到它们),因此我创建了一个函数来相应地填充相关概率的数组。 示例 :如果概率为0.3(30%),我希望有一个包含100个元素的数组,随机填充零和1 ,并且数组的总和必须接近30。 而不是100我使用N =试验数,所以如果N = 10000那么数组之和应该接近3000,等等。 Matlab中的function只是: function [y] = rand_gen(N,Prob) for i=1:N y(i,1) = binornd(1,Prob); end end 该函数将被称为: array = rand_gen(N, Probability); 现在,这是C中的问题:当我运行程序时,我可以生成一些数组,但最大试验次数(N)非常低,我不认为它是内存问题。 如果我运行N = 100000的程序一切正常,但在100000(和其他东西)崩溃后。 C中的程序是: #include #include #include int * rand_gen(int N, double Prob); // Function declaration int sum_array(int a[], int num_elements); // Function declaration int main() // Main […]

如何编写这个c文件的mexFunction

该函数是cyclic.c 。 void cyclic(float a[], float b[], float c[], float alpha, float beta, float r[], float x[], unsigned long n) // Solves for a vector x[1..n] the “cyclic” set of linear equations. a, //b, c, and r are input vectors, all dimensioned as [1..n], while alpha and beta are //the corner // entries in the […]

c ++ matlab代码上的奇怪错误

这是我的代码的一部分: double h; double sigma; /* The gateway function */ void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { double *nor; int n = mxGetScalar(prhs[0]); h = mxGetScalar(prhs[1]); nor = mxGetPr(prhs[2]); sigma = mxGetScalar(prhs[3]); double *x; /* create the output vector */ plhs[0] = mxCreateDoubleMatrix(1,n,mxREAL); /* get a pointer to the real […]

将带有OO语法的Matlab转换为c / c ++,而无需重写其function

我有使用OO语法的Matlab代码 ,我需要将其转换为C / C ++源代码 (不是二进制而是源代码)。 我已经阅读了有关Level 2 S-Functions和使用Simulink Coder但是 编写TLC用于“完全内联”TLC (不希望重写TLC中的完整例程) 要么 在TLC中使用“基于函数的包装器” (不希望在C文件中实现例程) 不符合我的要求。 是否有其他选项可以从Matlab代码生成C / C ++源代码?

在C / C ++中调用MATLAB API

我刚从某个地方听说,对于数值计算,“MATLAB确实提供了一些用户友好的API。如果你在C / C ++代码中调用这些API,你可以大大加快计算速度。” 但我没有在MATLAB文档中找到这样的信息,如http://www.mathworks.com/support/tech-notes/1600/1622.html和http://www.mathworks.com/access/helpdesk/help/techdoc /matlab_external/bp_kqh7.html 。 我从这些网站上学到的是,MATLAB可以通过Matlab引擎在C和C ++中调用,或者通过mcc将M文件编译到库中。 他们没有提到任何可以在C / C ++中调用的内置数值MATLAB API。 有人可以澄清一下吗? 感谢致敬!

c等于matlab的sind和cosd函数

所以我正在使用一些matlab代码手动转换为c代码。 我只是想知道是否有相当于我在matlab代码中看到的sind和cosd函数的交流。 我想这会以度为单位返回答案而不是以弧度为单位给出结果的c sin和cos函数。 我想我可以将结果乘以180 / pi,但只是想知道math.h中是否有库函数我没有看到。 或者即使gsl库中有某些内容可以执行此操作。

将一阶转移函数转换为c代码

我有一个简单的一阶转移,如“3 / s + 3”或“tf(3,[1 3])”函数,我想用c代码实现。 我有一个C函数,自上次迭代后调用delta时间: double output(double input, double t); //usually, t is around 0.01 second 如何在C中实现传递函数3 / s + 3?

如何编译MEX文件

如何编译MEX文件? 我是否需要安装任何软件?