当前位置: 首页 > news >正文

MATLAB函数封装2:QT调用封装函数

在利用MATLAB进行封装函数之后,最主要的目的是对函数进行调用,能够对矩阵运算和其他算法的运行进行快捷处理。

在有了MATLAB函数之后封装成DLL文件之后,在QT中添加动态链接库,就可以实现函数的调用过程,这个过程相对简单,这里重点说明如何使用生成的DLL。

以一个MATLAB函数为例,

function y = int2bin(source,N)
%简单的将10进制整数转化为N位2进制
%正负均用原码表示
len = length(source);
y = zeros(len,N);
if nargin~=2error('You have to input two arguments.')
end
if N<0error('You have to input a positive number of digits.')
end
if N~=fix(N)error('You have to input a integer for N')
end
for i = 1:lenif (source(i)>= 0) % 判断是否为正数y(i,1) = 0; % 正数第一位0temp=source(i);for j= 2 : Ny(i,N-j+2)=mod(temp, 2);temp = floor(temp/2);endelsey(i,1) = 1; % 负数第一位1temp=abs(source(i));for j= 2: Ny(i,N-j+2)=mod(temp, 2);temp = floor(temp/2);endend
end

这个函数的功能为把输入的10进制数据转换为N位的1进制数据,这个函数有有个输入参数,一个输出参数,通过deploytool指令对其进行封装,生成对应的三个文件,
在这里插入图片描述
打开.h文件,其中需要使用的函数有两个,
一个为,这个是函数的初始化函数,调用该函数看是否能够初始化成功。

extern LIB_int2bin_C_API 
bool MW_CALL_CONV int2binInitialize(void);

另一个为功能函数,

extern LIB_int2bin_CPP_API void MW_CALL_CONV int2bin(int nargout, mwArray& y, const mwArray& source, const mwArray& N);

该功能函数中含有四个参量,第一个参量int nargout 这个参数是一个int型参数,注意这个参数表示的是输出参数的个数,对应该int2bin函数,输出只有一个y,那么在进行函数调用的时候需要在此处填入1,如果MATLAB编写的函数有个两个输出参量,那么对应QT函数调用时候,这个第一个输入参量int nargout需要输入2,如果多个输出参量没有注意设定这个int值,将只有第一个输出量有结果。

函数中后面的三个参量正好对应着输出变量和两个输入变量,名称是和MATLAB函数一一对应的。注意变量类型为mwArray,所以对应输出的变量都需要按照该类型进行声明和定义。

下面给出qt中调用的完整过程。

// 把数据转换成16进制数据
if(!int2binInitialize())
{qDebug() << "Could not initialize int2bin!" ;
}
qDebug() << "int2binInitialize!" ; // 查看函数是否初始化成功mwArray output(mxDOUBLE_CLASS,mxREAL);
mwArray input1(360, 1, mxDOUBLE_CLASS);
mwArray input2(1, 1, mxDOUBLE_CLASS);
double input2Data[1] = {8};
input2.SetData(input2Data, 1);
int2bin(1, output, input1, input2);

这个过程就完成了函数的调用的过程,注意对于传入的函数的值必须为mwArray类型,对于该类型的赋值可以使用方法setData,其中的第二个参数为赋值的个数,因为数据类型表示的是矩阵,所以不一定是一个,对应的传入的量可以用一个数组类型,注意输入数据的维度要和MATLAB中定义的保持一直,如第一个input1表示的输入的是一个360*1的向量,共360个元素,这时候如果利用数组赋值需要input1.SetData(input1Data, 360)对该变量进行赋值。

而对于从变量中取数值使用的过程可以直接使用角标来提取,也可以使用Get方法来提取。

相关文章:

MATLAB函数封装2:QT调用封装函数

在利用MATLAB进行封装函数之后&#xff0c;最主要的目的是对函数进行调用&#xff0c;能够对矩阵运算和其他算法的运行进行快捷处理。 在有了MATLAB函数之后封装成DLL文件之后&#xff0c;在QT中添加动态链接库&#xff0c;就可以实现函数的调用过程&#xff0c;这个过程相对简…...

AJAX和JSON

1、什么是AJAX? AJAX&#xff08;ASynchronous JavaScript And XML&#xff09;异步的JavaScript 和 XML&#xff1b; 由Jesse James Garrett 在他的文章AJAX&#xff1a;A New Approoch to Web Applications中首次提出。 ajax&#xff08;Web数据交互方式&#xff09;_百…...

源码:SharedPreferences分析

一、持久化方式&#xff1a; DataStore&#xff1a;稳定性 MMKV&#xff1a;效率 SharedPreferneces 区别&#xff1a; 功能MMKVJetpack DataStoreSharedPreferneces是否阻塞主线程否否是是否线程安全是 是 是是否支持跨进程是否否是否类型…...

大二一个学期学这么点内容,没有概念,只有实操

如何查看所有的数据库&#xff1a; Show databases; 如何进入某个数据库&#xff1a; use xxx; 如何新进数据库&#xff1a; Create database jx; 如何删除数据库&#xff1a; Drop database jx; 如何查看所有的表格&#xff1a; Show tables; 如何创建数据表&#xf…...

AppWeb 身份验证绕过漏洞 (CVE-2018-8715)

当前漏洞环境部署在vulhub,当前验证环境为vulhub靶场&#xff08;所有实验均为虚拟环境&#xff09; 实验环境&#xff1a;攻击机----kali 靶机&#xff1a;centos7 1、进入靶场&#xff0c;启动环境 2、访问AppWeb控制台&#xff1a;http://your-ip:8080 使用用户名、密码adm…...

为什么监控摄像头画面不如手机拍摄视频画面清晰

一天和一个做餐饮的朋友吃饭聊天&#xff0c;他提出一个问题&#xff0c;几百块的监控摄像头就是纯粹做监控功能 &#xff0c;视频拍摄的画面为什么还没有几百元的手机拍摄的视频画面清晰&#xff0c;对于此特意查了一下技术资料&#xff0c;整理一下&#xff0c;以备下次再详细…...

EU GMP附录一与关键区域空气微生物取样方案及相关法规标准解读

2022版EU GMP附录一与关键区域空气微生物取样方案疑问解答 3月30日2022版EU GMP附录一与关键区域空气微生物取样方案网络研讨会期间&#xff0c;我们收集到了部分参会听众针对该主题所提出的常见问题。根据以下这些问题&#xff0c;lighthouse微生物应用专家将来为您答疑解惑。…...

【软件测试】自动化测试日志问题该怎么解决?测试老鸟总结方案...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Python自动化测试&…...

快速响应 智慧应急|大势智慧亮相第三届武汉国际安全应急博览会

4月26日至4月28日&#xff0c;第三届武汉国际安全应急博览会&#xff08;后简称“应博会”&#xff09;在湖北武汉顺利举办。本次展会&#xff0c;大势智慧以实时三维重建能力为核心&#xff0c;提供各类应急场景的技术支撑&#xff0c;助力应急处置和救援等方面的应用。 展会…...

MySQL数据库——MySQL DELETE:删除数据

在 MySQL 中&#xff0c;可以使用 DELETE 语句来删除表的一行或者多行数据。 删除单个表中的数据 使用 DELETE 语句从单个表中删除数据&#xff0c;语法格式为&#xff1a; DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句] 语法说明如下&#xff1a; …...

管家婆安装导致电脑蓝屏问题解决方案

安装完管家婆后&#xff0c;电脑蓝屏&#xff0c;重启还是蓝屏&#xff0c;这该怎么办&#xff1f; 导致的原因&#xff1a;因加密狗驱动不适配于Windows10系统&#xff0c;导致电脑蓝屏 修复方案&#xff1a;进入电脑安全模式&#xff08;怎么进入问度娘&#xff09;&#…...

Compiler Lab1- 自制词法分析器

由于编译原理课的Lab1为自制词法分析器&#xff0c;所以笔者用C实现了一个极简的C语言词法分析器&#xff0c;用于分析C语言源代码。它可以处理关键字、标识符、整数、实数、浮点数的科学计数法表示、运算符、分隔符、字符串字面量、字符字面量、注释和预处理指令。请注意&…...

构建API的战斗——与来自Kong的Marco Palladino的问答

Kong是一个开源的API网关&#xff0c;可用于管理、安全性和监视微服务和API的所有流量。以下是Kong官方网站的介绍&#xff1a; Kong是一个云原生、快速、可扩展的分布式微服务抽象层&#xff08;也称为API网关、API中枢、API发布器或API服务的网关&#xff09;。 Kong即可充当…...

华为OD机试 - 对称美学(Python)

题目描述 对称就是最大的美学,现有一道关于对称字符串的美学。已知: 第1个字符串:R 第2个字符串:BR 第3个字符串:RBBR 第4个字符串:BRRBRBBR 第5个字符串:RBBRBRRBBRRBRBBR 相信你已经发现规律了,没错!就是第 i 个字符串 = 第 i - 1 号字符串取反 + 第 i - 1 号字符…...

argparse.ArgumentParser

文章目录 argparse.Namespace() Python参数解析工具argparse.ArgumentParser()和实例详解 创建解析器 parserargparse.ArgumentParser() 添加参数 parser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][, required][, help][, meta…...

大数据Doris(五):FE 扩缩容

文章目录 FE 扩缩容 一、通过MySQL客户端连接Doris 二、FE Follower扩缩容 1、准备 FE 安装包...

react相关概念

真实DOM和虚拟DOM区别 react关于虚拟DOM和真实DOM 虚拟DOM比较“轻”&#xff0c;真实DOM比较“重”&#xff0c;因为虚拟DOM是React在用&#xff0c;无需真实DOM上那么多属性 虚拟DOM最终一定会转为真实DOM放入页面 JSX JSX: 全称JavsScript XML 是react定义的一种类似于XM…...

计算机的硬件系统的组成

微型计算机是指一种体积小、功能强大的计算机系统&#xff0c;通常用于个人或小型企业的日常办公、娱乐等需求。微型计算机的硬件系统主要由以下几个部分组成&#xff1a; 一、中央处理器&#xff08;CPU&#xff09; 中央处理器&#xff0c;简称CPU&#xff08;Central Proc…...

Python基础-列表元组

列表元组 列表元组的操作符 len在列表元组中的使用 len函数可以计算除数字类型之外,其他所有数据类型的长度 列表(元组)之间的累加与乘法 两个列表相加可以使用同一个列表多次累加可以使用* in和not in在列表(元组)中的用法 in用于判断某个成员(元素)是否在该数据结构中…...

【校招VIP】拿到offer就躺平?转正前需要知道的这些事儿...

现在春招基本上结束了&#xff0c;拿到offer的同学就觉得可以直接躺平了。 但是拿到offer只是我们取经路上九九八十一难的第一关&#xff0c;后面还有很多的关卡等着考验我们。 近些年来在实习期间或者试用期间&#xff0c;无法转正的例子比比皆是&#xff0c;令人心动的offe…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

DAY 26 函数专题1

函数定义与参数知识点回顾&#xff1a;1. 函数的定义2. 变量作用域&#xff1a;局部变量和全局变量3. 函数的参数类型&#xff1a;位置参数、默认参数、不定参数4. 传递参数的手段&#xff1a;关键词参数5 题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一…...