如何用Qt调用matlab生成的动态库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用Qt调用matlab生成的动态库相关的知识,希望对你有一定的参考价值。
参考技术A 先写好实现动态链接库的libmy.cpp文件和libmy.h文件,如下://libmy.cpp#include"libmy.h" #includeusingnamespacestd;MyLib::MyLib() MyLib::~MyLib() voidMyLib::hello() coutusingnamespacestd;intmain(intargc,char*argv[]) MyLib*lib=newMyLib(); //调用刚才编写的动态链接库 lib->hello(); cout>i; return1; 编写main.pro文件,如下:LIBS+=-L./ #设置程序查找动态库的目录为当前目录 #注意:用QT生成的动态库默认都加了lib前缀和扩展名及版本名,但调用时不用加lib,不用加文件#扩展名so、不用加版本名1.0.0.即下面LIBS中的DllTest就是实际的动态库libDllTest.so.1.0.0LIBS+=-lDllTest #注意:调用时不用加lib,不用加文件扩展名so、不用加版本名1.0.0,记得前面加l(字母)TARGET=libMyTest SOURCES+=main.cpp执行qmakemain.pro生成makefile文件,然后执行make,可以看到生成了libMyTest可执行文件。将动态链接库libDllTest.so.1.0.0和可执行文件传到arm板上,如下: 在arm板上执行libMyTest,如下:#chmod+x libMyTest //先赋予可执行权限执行:# ./libMyTest 输出如下:如何用matlab生成高斯分布随机数
参考技术A 可调用matlab内部函数,格式为u=randn(N)或者u=randn(M,N),前者为N维向量,后者为M*N矩阵,
这种调用方式产生的随机序列均值为零,方差为1
例如:R
=
normrnd(Mu,
Sigma,
m,
n)
%产生服从N(Mu,
Sigma^2)
分布的m行n列的随机数组R 参考技术B m=10;
%产生m行n列的随机数矩阵
n=8;
miu1=1;%第一个分布的参数
sigma1=2;%第一个分布的参数
miu2=6;%第二个分布的参数
sigma2=1;%第二个分布的参数
r
=
0.2*normrnd(miu1,sigma1,m,n)+0.8*normrnd(miu2,sigma2,m,n);
单点的概率全是0,那你取出来的随机数算什么?
若干个随机数要满足统计分布,是要按区间统计的
另外我不知道你要做什么就是了。
你如果想按一定的概率密度来产生随机数,你最好用反函数法之类的来弄。
比如产生一个x.^2分布的随机数,不过这些要归一化。
============================================
首先,我知道我的是错的了。如下图就可知
m=1000;
%产生m行n列的随机数矩阵
n=1;
miu1=1;%第一个分布的参数
sigma1=2;%第一个分布的参数
miu2=6;%第二个分布的参数
sigma2=1;%第二个分布的参数
r
=
0.2*normrnd(miu1,sigma1,m,n)+0.8*normrnd(miu2,sigma2,m,n);
x=-5:0.001:15;
y1=normpdf(x,miu1,sigma1);
y2=normpdf(x,miu2,sigma2);
subplot(2,2,1);
plot(x,y1);
subplot(2,2,2);
plot(x,y2);
subplot(2,2,3);
y3=0.2*y1+0.8*y2;
plot(x,y3);
subplot(2,2,4)
dx=0.5;
xx=-5:dx:15;
yy=hist(r,xx);
yy=yy/m/dx;
plot(x,y3);
hold
on
bar(xx,yy)
=======================================
正确做法,我还没弄出来,继续中。。。。
============================================
_____________________新的尝试
下面的结果我觉得可能可以接受。
思路:基于反变换法
matlab下面有
p=normpdf(x,miu,sigma)是求出x处的概率密度。
p=normcdf(x,miu,sigma)是求出x
评论
0
0
加载更多
以上是关于如何用Qt调用matlab生成的动态库的主要内容,如果未能解决你的问题,请参考以下文章