C++/Java调用Matlab函数:以逆矩阵为例

4星 · 超过85%的资源 需积分: 10 5 下载量 16 浏览量 更新于2024-09-18 收藏 186KB PDF 举报
在C++和Java中调用Matlab提供的函数,特别是在处理矩阵运算时,是一个常见的需求。以反矩阵为例,Matlab提供了内置函数`inv()`用于计算矩阵的逆。在Matlab中,可以像这样轻松计算: ```matlab >> A = [1, 2, 3; 4, 5, 6; 7, 8, 0] >> invA = inv(A) ``` 在C++或Java中实现这个功能,首先需要通过某种方式与Matlab进行交互。一个常见的方法是利用Matlab Compiler(MEX)技术,将Matlab函数编译成可以在C++/Java中调用的动态链接库。对于简单的交互,如仅调用单个函数,可以使用`mbuild.exe`工具来编译C++代码,并自动设置所需的库路径。 在C++中,例如,我们可以通过`matlab.hpp`头文件来引用Matlab的函数,如下面的代码片段: ```cpp #include "matlab.hpp" void main() { int Height = 3, Width = 3; double data[] = {1, 4, 7, 2, 5, 8, 3, 6, 0}; // 配置数据 mwArray A(Height, Width, data); // 创建Matlab数组 cout << A << endl; // 输出数组检查 // 调用inv函数 mwArray invA = mexFunction("inv", {&A}, {"double"}, 1); // 使用invA数组 } ``` 为了编译这段代码,需要确保已安装了Matlab Compiler并正确配置了环境变量和编译参数。对于MSVC集成开发环境,步骤如下: 1. 设置MATLAB环境变量,指向MATLAB安装目录,例如`d:\MATLAB6P5`。 2. 在MSVC中设置编译参数: - 添加变量定义:针对不同的平台(如IBM PC、MSVC、MSWIND等),可能需要包含特定的预处理器宏,如`__STDC__`。 - 添加头文件路径:确保C++编译器能够找到`matlab.hpp`和其他依赖库的头文件路径,通常是在Matlab安装目录下的`extern/include`或类似路径。 当这些设置完成,就可以使用`mbuild.exe`编译C++源代码。例如,命令行如下: ``` C:> mbuild yourC++Source.cpp ``` 如果涉及到更复杂的交互或多个Matlab函数,可能需要创建MEX函数或者使用Matlab的API来编写更加底层的交互逻辑。调用Matlab函数需要对两种语言和它们的接口有深入理解,同时也要熟悉Matlab函数的使用和编译过程。
2010-03-31 上传
目 录 1 前言 1 2 USE概述 2 2.1服务部件 4 2.2统计数据库说明 5 2.3开发接口 5 2.4实用工具 6 3 USE开发指南 8 3.1 坐席软电话开发说明 8 3.1.1 API层开发 10 long USE_ConnectToAgent 12 long USE_DisconnectAgent 13 long USE_Login 14 long USE_LoginEx 16 long USE_Logout 17 long USE_ SetAgentStatus 18 long USE_GetAgentEvent 19 long USE_ForceLogout 23 long USE_SendMsgToAgent 24 long USE_BroadMsgToAll 25 long USE_BroadMsgToAgentGroup 26 long USE_GetAgentStatus 27 long USE_GetAgentDNByID 29 long USE_GetAgentIDByDN 30 long USE_ConnectTelBaseServer 31 long USE_DisconnectFromTelBaseServer 32 long USE_GetAssociateData 33 long USE_SetAssociateData 35 long USE_AnswerCall 37 long USE_DisconnectCall 38 long USE_HoldCall 39 long USE_RetrieveHeld 40 long USE_ConsultCall 41 long USE_ConferenceCall 43 long USE_TransferCall 44 long USE_ReconnectHeld 45 long USE_MakeCall 46 long USE_SingleStepTransfer 47 long USE_SingleStepConference 48 long USE_GetDeviceState 49 long USE_ConnectToRouter 51 long USE_DisconnectFromRouter 52 long USE_GetSrvRoutePoint 53 long USE_SetService 54 long USE_GetServiceData 56 long USE_ReqVirtualRoute 58 long USE_GetRouteTarget 59 long USE_RegOutboundSrv 61 long USE_GetAllSrvRes 62 long USE_WithdrawPreLock 63 long USE_WithdrawVirtualRoute 64 long USE_GetResourceCount 65 long USE_GetResourceDetail 66 long USE_SetServiceEx 68 long USE_GetSrvDescByContact 69 int TV_Installed 71 int TV_Initialize 71 Void TV_Disable 72 Void TV_HangUpCtrl 72 Void TV_OffHookCtrl 73 int TV_StartDial 73 Void TV_FlushDTMF 74 int TV_GetDTMFChar 75 Void TV_ConnectChannels 75 Void TV_DisconnectChannels 76 Void TV_ConnectTo 76 long TV_StartRecordFile 77 long TV_StartPlayFile 77 long TV_PlayFileRest 78 long TV_StopPlayFile 78 3.1.2 USE_AgentBar OCX层开发 79 3.1.2.1 USE_AgentBar控件说明 79 3.1.2.2 USE_AgentBar控件属性 82 3.1.2.3 USE_AgentBar方法 85 3.1.2.4 USE_AgentBar事件 124 3.2 USE_Monitor OCX开发 133 3.2.1 USE_Monitor控件概述 133 3.2.2 USE_Monitor方法说明 133 long Init( ) 133 long Stop( ) 134 long GetFirstService( ) 135 long GetNextService( ) 137 bool IsLastService ( ) 138 long GetServiceStatistic( ) 139 long GetAllServiceStatistic( ) 142 long GetAgentStatusByID( ) 144 long GetFirstAgentByService( ) 145 long GetNextAgentByService( ) 147 bool IsLastAgent ( ) 148 long GetDeviceStatusByID( ) 149 long GetFirstDeviceByService( ) 150 long GetNextDeviceByService( ) 151 bool IsLastDevice( ) 152 long GetFirstTrunkGroup( ) 153 long GetNextTrunkGroup( ) 154 bool IsLastTrunkGroup( ) 155 bool IsAgentResource( ) 156 long GetTrunkGroupStatistic( ) 157 long GetaAllTrunkGroupStatistic() 158 long BroadcastMsgToServiceGroup() 159 long BroadcastToAll() 160 long SendMsgToAgent() 161 long ForceLogout( ) 162 3.3 IVR接口开发 163 3.3.1 接口数据类型 163 3.3.2 接口函数定义 164 USE_Result USE_SetAssociateData() 164 USE_Result USE_GetAssociateData() 166 USE_Result USE_MakeService() 168 USE_Result USE_RequestService() 169 USE_Result USE_ReqOutboundSrv() 171 USE_Result USE_ReqPreLockSrv() 172 USE_Result USE_WithdrawPreLock() 173 USE_Result USE_GetServiceInfo() 174 3.3.3 COM组件发布 176 COMUSE_MakeServiceVoiceMail 176 3.4 统计报表开发 177 3.4.1 概述 177 3.4.2 基础数据表 177 3.4.2.1 坐席登录日志表 (Tbl_Agent_Log) 177 3.4.2.2 坐席工作状态明细表(Tbl_Agent_Status) 179 3.4.2.3 资源服务信息表(Tbl_Res_Working) 180 3.4.2.4 资源协作服务信息表(Tbl_Res_Coorporation) 182 3.4.2.5 服务单元详细信息表(Tbl_SrvUnit) 183 3.4.2.6 呼叫基础信息表(Tbl_Contact_Base) 184 3.4.3 服务明细数据视图 187 3.4.3.1 服务单元明细视图(View_SrvUnit_Detail) 187 3.4.3.2 资源受理服务明细视图(View_Res_Working) 189 3.4.3.3 资源协作服务明细视图(View_Res_Coorporation) 191 3.4.3.4 坐席工作状态明细视图(View_Agent_Status) 192 3.4.3.5 中继组状态明细视图(View_TrunkGroup_Status) 193 3.4.3.6 系统呼叫明细视图(View_Contact_Data) 194 3.4.4 统计数据表和视图 195 3.4.4.1 服务统计表(未定义) 195 3.4.4.2 呼叫流量表(时、日、月) 195 3.4.4.3 服务单元统计表(时、日、月) 196 3.4.4.4 坐席受理服务统计表(时、日、月) 198 3.4.4.5 设备资源服务统计表(时、日、月) 200 3.4.4.6 坐席工作统计表(时、日、月) 202 3.4.4.7 坐席工作日志表 203 附录: 204 附录A:统计开发特殊域说明 204 附录B:统计开发特殊概念的说明 206 附录C:常用错误代码对照表 207 附录D:坐席状态迁移图 211 附录F:转移方法与状态关系表 212