当前位置:文档之家› matlab和ccs之间问题

matlab和ccs之间问题

matlab和ccs之间问题
matlab和ccs之间问题

摘要:本文介绍了利用Matlab和Simulink中Developer's Kit for TI DSP工具对DSP进行系统级设计的方法。

关键词:DSP;Matlab;TI;CCS;IDE

引言

传统的DSP设计开发流程分为两个部分:开发设计和产品实现。在开发设计部分完成算法开发和方案设计,产品的实现用来验证开发设计的正确性,通常是在不同的部门相互独立地完成。这样的开发流程存在许多问题,如相互之间的协作,系统范围内的算法测试,系统设计的错误不能被及时发现等。

利用Matlab和Simulink系统级的设计方法和快速原型的自动化工具可以解决这些问题。

系统级设计方法与快速原型

系统级设计方法的核心是将算法设计和系统级设计仿真在统一的开发环境中进行,从而有效地将开发流程

的将两个部分结合在一起。

进行系统级设计需要一个统一的开发环境,且在该开发环境中可以对系统结构、算法进行描述,还能够对系统不同层次,不同组件和不同数据类型进行建模;同时要有良好的移植性能。Simulink提供了这样一个很好的开发环境,它是基于图块的系统级仿真环境。分级系统的描述方式,提供了真正的自顶向下的设计方法,并且通过图块的方式实现移植。

快速原型就是系统工程师在硬件平台上快速验证他们的方案。这里快速是指无需进行漫长的针对硬件的软硬开发过程,就可以方便的使用相关硬件平台。快速原型不需要工程师进行大量的C或汇编编写代码的过程,同时还降低系统工程师对硬件知识的要求,并提供了硬件在回路仿真的能力。

图1 集成开发工具的三种接口

面向TI DSP的系统级设计

MathWorks 公司为我们提供了功能强大的DSP系统和算法设计工具:Matlab和Simulink,Texas Instruments 提供了高性能的DSP设备和集成开发环境。两公司合作推出了集成开发工具Developer's Kit for TI DSP,向用户提供了三种接口,如图1所示。

Targer for CCS IDE/C6701 EVM/C6711 DSK

Targer for CCS IDE/C6701 EVM可以让用户从数字信号处理的Simulink模型自动生成C6701 EVM的CCS IDE工程文件,并可进一步自动编译下载到C6701 EVM上执行。设计人员可以快速的将数字信号处理的算法模型下载到实时硬件平台上执行,用以评估算法的性能,或者转换为一个CCS IDE工程文件,实现从Simulink环境到CCS IDE环境的无缝连接。通过Target for CCS IDE/C6701 EVM,用户可以方便的利用MathWorks公司提供的DSP、通信和数学算法库,将主要的精力放在设计而不是DSP编程上,进行反复的迭代设计,直到算法满足系统性能要求。Targer for CCS IDE/C6701 EVM/C6711 DSK从以下方面方便了用户:

?有助于实现DSP算法原型

?系统级的算法验证

?从Simulink模型到CCS IDE工程的无缝转换

?降低编写DSP代码的难度

Link for CCS IDE

Link for CCS IDE接口实现了CCS IDE和Matlab之间的连接,允许用户在MATLAB命令窗口下载运行CCS IDE中的程序,与目标内存之间(非实时地)交换数据,检测处理器的状态,停止或者启动程序在DSP中地运行。Link for CCS IDE的优点:

?用户可以利用MATLAB强大的数据分析和可视化功能,节省设计和调试程序的时间;

?可以编写用于调试数字信号处理程序的MATLAB语言批处理脚本,实现调试和分析的自动化;

?支持TI的C5000/6000系列DSP。

Link for RTDX

DSP 的实时数据交换(RTDX)允许系统工程师在Host computer和Target之间进行实时的数据传输且不用考虑Target程序。这里的Link for RTDX接口提供了MATLAB和支持RTDX的TI DSP上运行的程序之间实时交换数据的一种方式。利用Developer's Kit for TI DSP提供的MATLAB ActiveX对象CCSDSP,可以建立MATLAB和DSP之间通信的通道,在MATLAB命令窗口和DSP应用程序之间实时地发送和接收数据,而且无需中断程序的运行。Link for RTDX实现了对实时数据的自动化的高级分析和可视化,实现了对复杂DSP程序的有效验证。

这里需要注意Developer's Kit for TI DSP的自动代码生成是面向C6711DSK和C6701 EVM等一些TI产品,对于用户开发的目标板Developer's Kit for TI DSP不能直接支持,需要在外围的驱动等方面做相应的修改;对于实时的数据交换、程序的控制等方面的应用是面向所有的C5000、C6000目标板的。

应用举例

Developer's Kit for TI DSP的中心点在于系统级开发C6701 EVM/C6711 DSK的数字信号处理的应用系统,下面举例介绍其用法。

C6701 EVM是TI公司推出的TMS320C6701 DSP芯片的评估板,它可用于有线/无线宽带网络、语音识别、图象处理、雷达等对运算能力和存储量有较高要求的场合。它包含的硬件有:(1)32位浮点DSP芯片

TMS320C6701/167MHz,1GPS;(2)64K×32bit SRAM,2M×32bit SDRAM;(3)标准JTAG接口,与XDS510/560连接方便调试;(4)CPLD,实现板上逻辑、时序控制;另外有PCI接口,电源模块,音频接口等。Developer's Kit for TI DSP开发C6701 EVM应用系统的步骤:

(1)安装C6701 EVM板,将TI提供的相关软件CCS IDE也安装在同一台PC机上。

(2) 运行MATLAB,在命令栏键入:C6701EVMLIB,打开C6701EVMLIB的Simulink模块库。该库包含四个模块C6701 EVM ADC(模数转换模块)、C6701 EVM DAC(数模转换模块)、C6701 EVM LED(指示用户状态的LED)、Reset C6701 EVM(复位模块)。

(3)建立Simulink仿真模型,如果需要,可以为Simulink仿真模型添加上述的EVM I/O设备。设置其属性,在属性对话框中单击Real-Time Workshop选项卡,Category栏里选中Target configuration,修改System target file和Template make file文件名。

(4) 在Real-Time Workshop选项卡中选中TI C6701 EVM runtime 其它位默认值,单击Make Project按钮,就可将Simulink模型自动生成CCS IDE的工程文件,并自动调入CCS IDE中,那么该工程文件就可以在CCS IDE中编译下载运行了。若现在生成工程文件后,自动地编译下载到C6701 EVM上执行,要改Build action 选项为Build_and_execute。这时单击Build&Run按钮,可实现自动的编译下载并运行。

结语

应用Matlab和Simulink对DSP进行系统级的设计极大改进了传统的设计方法。Simulink系统级的设计环境,有助于在设计早期发现错误和应对系统复杂性不断增加的挑战,使用Developer's Kit for TI DSP集成开发工具能够方便的进行快速原型和硬件在回路仿真,消除了传统设计方法的不足。

参考文献

1戴明桢.周建江.TMS320C54X DSP结构、原理及应用北京航空航天大学出版社2001(11)

2 张雄伟.曹铁勇.DSP芯片的原理与开发应用(第2版).电子工业出版社.2000(9)

3 Developer's Kit for Texas Instruments DSP User's Guide. MathWorks Inc. February 2001

4 TMS320C6701 Evaluation Module User's Guide. Texas Instruments Inc., August 2002

基于Matlab的DSP系统级的设计方法

传统的DSP应用系统设计流程分为2个部分:开发设计和产品实现。在开发设计部分完成方案设计和算法设计与验证,一般用Matlab语言进行仿真,当仿真结果满意时,再进入产品的实现阶段。将开发设计阶段的算法用C/C++或者汇编语言实现,在硬件的DSP目标板上调试。因此,需要将开发工具CCS把目标DSP程序运行的中间结果保存到PC机的硬盘上,然后调到Matlab工作空间,与Matlab算法的中间结果进行比较,以发现DSP程序中由设计或精度导致的结果偏差。如此过程反复进行,非常不便。

为了解决这个问题,出现了系统级设计方法的构想。系统级设计方法的核心是将算法设计和系统级设计仿真在统一的开发环境中进行,从而有效地将开发流程的2个部分结合在一起。进行系统级设计需要一个统一的开发环境,且在该开发环境中可以对系统结构、算法进行描述,还能够对系统不同层次、不同组件和不同数据类型进行建模。Matlab Link for CC S Development Tools就是为了完成系统级设计而出现的。

1.Matlab Link for CCS Development Tools简介

Mathworks公司和TI公司联合开发的Matlab Link for CCS Development Tools(CCS Link) 提供了Matlab和CCS的接口,即把Matlab 和TI CCS及目标DSP连接起来。利用此工具可以像操作Matlab变量一样来操作TI DSP的存储器或寄存器,即整个目标DSP对于Matlab好像是透明的,开发人员在Matlab环境中就可以完成对CCS的操作。Matlab Link for CCS Dev elopment Tools可以支持CCS能够识别的任何目标板,包括TI公司的DSP,EVM板和用户自己开发的目标DSP(C2000,C5000,C6000)板。

CCS Link主要特点总结如下:

(1)Matlab函数可以自动完成调试、数据传递和验证。

(2)在Matlab和DSP之间实时传递数据,而不用停在DSP中程序的执行。

(3)支持XDS510/XDS560仿真器,可以高速调试硬件DSP目标板。

(4)提供嵌入式对象,可以访问C/C++变量和数据。

(5)对测试、验证和可视化DSP代码提供帮助。

(6)扩展了Matlab和eXpressDSP工具的调试能力。

(7)符合TI eXpressDSP标准。

2CCS Link面向TI DSP的系统级设计方法

CCS Link向用户提供了三种接口如图1所示。

2.1Link for CCS IDE

Link for CCS IDE接口实现了CCS IDE和Matlab之间的连接,允许用户在Matlab命令窗口下载运行CCS IDE中的程序,与目标内存之间(非实时地)交换数据,检测处理器的状态,停止或者启动程序在DSP中的运行。

Link for CCS IDE的优点:

(1)用户可以利用Matlab强大的数据分析和可视化功能,节省设计和调试程序的时间。

(2)可以编写用于调试数字信号处理程序的Matlab语言批处理脚本,实现调试和分析的自动化。

(3)支持TI的C5000/6000系列DSP。

2.2Link for RTDX

DSP的实时数据交换(RTDX)允许系统工程师在Host computer和Target之间进行实时的数据传输且不用考虑Target程序。这里的Link for RTDX接口提供了Matlab和支持RTDX的TI DS P上运行的程序之间实时交换数据的一种方式。利用此连接对象,可以打开、使能、关闭或禁止DSP的RTDX通道,利用此通道可以实时的向硬件目标DSP发送和取出数据,而不用停止DS P口正在执行的程序。Link for RTDX实现了对实时数据的自动化的高级分析和可视化,实现了对复杂DSP程序的有效验证。

例如把原始数据发送给程序进行处理,并把数据结果取回到Matlab空间中进行分析。RTDX 连接对象实际上是CCS连接对象的一个子类,在创建CCS连接对象的同时创建RTDX连接对象,他们不能分别构建。

2.3嵌入式对象

在Matlab环境中创建一个可以代表嵌入目标C程序中的变量的对象。利用嵌入式对象可以直接访问嵌入在目标DSP的存储器和寄存器中的变量,即把目标C程序中的变量作为Matlab的一个变量对待。在Matlab中收集DSP程序中的信息,转变数据类型,创建函数声明,改变变量值,并把信息返回到DSP程序中,所有这些操作都在Matlab环境下完成。

3CCS IDE连接对象应用举例

CCS IDE连接对象提供Matlab与CCS IDE和目标DSP的连接。利用此连接可以在Matlab下控制和操作DSP中的应用程序,利用Matlab中强大计算分析和可视化工具来分析和对比目标程序运行中的结果,大大缩短嵌入式应用程序的开发调试周期。

具体应用步骤如下:

(1)选择DSP型号

根据ccsfoardinfo函数列出安装在主机上的目标板及其DSP信息,从中选择需要的型号。

此处选择0号DSP:

Boardnum=0; procmum=0;

(2)创建CCS IDE连接对象

cc=ccsdsp(′boardnum′,boardmun,′procnum′

xu_6x11.pjt是CCSLink提供的一个工程文件。

编译链接CCS IDE中当前的工程文件,生成目标DSP可执行文件:

(4)在Matlab环境下对CCS IDE连接对象进行操作

利用CCS Link中的read和write函数来访问2个全局数组:

从这个例子中可以看到在Matlab环境下操作DSP中的变量或者寄存器是很方便的。这样就可以在Matlab环境下完成DSP 程序的仿真调试。而不用像传统的开发要把DSP运行结果调回PC机验证,方便了开发设计,缩短了开发周期。

4结语

应用Matlab对DSP进行系统级的设计极大地改进了传统的设计方法。Matlab系统级的设计环境,有助于在设计早期发现错误和应对系统复杂性不断增加的挑战,方便了复杂DSP应用系统的设计。

一种基于Matlab的DSP调试及直接代码生成方法

Matlab作为一种有效的信号处理工具,已经渗透到DSP的设计当中。开发者在将一个新的数字信号处理算法应用于实际前,一般是先用Matlab进行模拟验证,当模拟结果满意时再把算法修改成C或DSP汇编语言通过CCS在目标DSP上实现,并比较实际应用与模拟的结果以发现误差,如此反复进行。在较新版本的Matlab(6.0以上)中提供了Matlab与DSP的统一集成环境后,众多学者对Matlab环境下的DSP调试进行了研究。文献[2-4]从CCSLink的角度出发,对Matlab环境下的DSP调试进行了原理及思路上的阐述,但均未涉及到直接代码生成。本文在介绍CCSLink的连接对象、嵌入式对象和RTDX对象的基础上,详细阐述Simulink环境下的直接代码生成。

1 CCSLink及ETTI C2000概述

Matlab具有强大的分析、计算和可视化功能,但处理速度慢;DSP具有快速的信号处理能力,但是其CCS的编译环境中数据可编辑和分析能力不如Matlab;而MathWorks公司和TI公司联合开发的Matlab Linkfor CCS Development Tools(CCSLink)和EmbeddedTarget for the TI TMS320C2000 DSP Platform(ETTI C2000),CCSLink提供了Matlab和CCS的接口,能把Matlab 和TI CCS及目标DSP连接起来。利用此工具可以像操作Matlab变量一样来操作TI DSP的存储器或寄存器。CCSLink支持CCS 能够识别的任何目标板(C200,C5000,C600),此工具用于DSP程序的调试过程。而CCSLink与ETTIC2000的配合使用,可直接由Matlab的Simulink模型生成TIC2000DSP的可执行代码,能在集成、统一的Matlab环境下完成DSP的整个开发过程。

2 CCSLink环境下的DSP调试

CCSLink向用户提供了3个组件内容,如图1所示。

2.1 CCSLink的接口对象

2.1.1 CCS IDE的连接对象

该对象支持TI的C2000/5000/6000系列DSP,利用此对象可创建CCS IDE和Matlab的连接。用户可以编写用于DSP程序的Matlab语言批处理脚本,从Matlab的命令窗中直接运行CCS IDE中的应用程序,向硬件DSP的存储器或寄存器发送或取出数据,检查DSP的状态,停止或启动程序在DSP中的运行。

2.1.2 与RTDX的连接对象

该对象提供Matlab和硬件DSP之间的实时通信通道。它允许用户在主机和目标板之间进行实时的数据交换而不用考虑目标程序的运行。RTDX连接对象实际上是CCS连接对象的一个子类,在创建CCS连接对象的同时创建RTDX连接对象,它们不能分别创建。

2.1.3 嵌入式对象

在Matlab环境中创建一个可以代表嵌入在目标C程序中的变量的对象。利用嵌入式对象可直接访问嵌入在目标DSP的存储器和寄存器中的变量,即把目标C程序中的变量作为Matlab的一个变量来对待,并把编辑后的信息反返回到DSP程序中。所有这些操作均在Matlab环境下完成。

2.2 CCS IDE连接对象应用

CCS IDE连接对象提供Matlab与CCS IDE和目标DSP的连接,利用此连接可以在Matlab环境中控制和操作DSP中的应用程序;利用Matlab中强大的计算、分析和可视化工具来分析和对比目标程序运行过程中的结果;而嵌入式对象则提供Matlab对DSP内存中的变量进行实时访问和控制,这样大大缩短嵌入式应用程序的开发调试周期。本文以运行具体程序说明调试过程。源程序PWM.pjt保存在Matlab根目录下的project文件下。

从上述程序可知,在Matlab环境下可以完成对CCS工程文件的调入、编译,生成可执行文件并将其加载到DSP目标板。并且可以通过相应的连接对象和嵌入式对象操作函数,实现在DSP硬件不停止执行程序的情况下对DSP的C语言程序中数据结构变量的读写修改。

3 ETTIC2000环境下的直接代码生成

由第2节中可知,CCSLink为TI DSP实时应用开发的调试和测试阶段提供了强大的支持,而ETTIC2000则为TI C2000 DSP 实时应用开发的整个过程(概念设计、算法仿真、源代码编写、目标代码生成、调试和测试)都提供了支持。利用ETTIC2000能够从Sireulink模型自动生成TI(22000 DSP的可执行代码,并且为TI LF2407 EVM目标板上的I/O设备提供驱动代码,使得MINULINK模型可以直接在LF2407EVM板上进行实时测试,从而在Simulink统一环境下就可以实现整个硬件在线仿真。

3.1 ETTIC2000应用开发过程

应用ETTIC2000开发实时DSP处理的过翟如下:

(1)概念构思和DSP处理算法设计;

(2)在Simulink环境下,利用DSP BLOCKSET,FIXED-POINT BLOCKSET,C2000 DSPLIB和Simulink等库中的模块构建算法模型,并在Simulink环境下进行仿真;

(3)如果Simulink仿真效果满意,就可以在模型中加入需要的LF2407 EVM目标板上的I/O模块;

(4)设置REAL-TIME WORKSHOP中的编译链接(BUILD)选项;

(5)利用CCS中的调试工具、CCSLink或RTDX来调试目标DSP中的程序;

REAL-TIME WORKSHOP能够从Simulink模型中自动产生C代码并且插入ADC和DAC模块指定的I/O设备驱动程序。再通过REAL-TIME WORKSHOP面板上的BUILD按钮,REAL-TIME WORKSHOP会自动产生实时可执行代码。

3.2 建立Simulink模型

由前述连接对象可知,系统已经正确安装了TIC2000系列DSP目标板。在Matlab命令窗口输入:C2000LIB,打开TIC2000的Simulink模块库,其模型库组成如图2所示。本系统采用2407目标板,因此只用到C2000 Target Preferences和C2400DSP ChipSupport等模块。本文以脉宽调制中A/D采样控制为例,其建立的Simulink模型如图3所示。

3.3 REAL-TIME WORKSHOP选项设置

建立好Simulink模型后,设置其属性,生成CCS可执行的工程文件。

在Simulink模型窗口选择Simulation下拉菜单中选择Configuration Parameters,弹出如图4所示对话框。在属性对话框中单击Real-Time Workshop选项卡,在Category栏中选中Target configuration修改System target file和Template make

file文件名。其他选择默认值,单击Generate Code,就可以将Simulink模型自动生成CCS IDE的工程文件,并自动调入CCSIDE 中,则该工程文件就可以在CCS IDE中编译下载运行。其生成的工程文件在CCS IDE环境下的载人情况如图5所示。

在直接代码生成时,Matlab命令窗口返回信息如下:

至此,代码生成并在CCS IDE中编译完毕。

4 结语

本文基于Matlab环境对DSP的实时调试及直接代码生成过程做了详细的阐述,并结合实例给予演示。实验证明,应用Matlab 对DSP进行实时调试和代码生成,有效地改变了传统的设计方法。Matlab的易于操作性有助于在设计早期发现错误并进行实时更改。而CCSLINK与ETTIC2000的结合,使得在集成、统一的Matlab环境下完成DSP开发的整个过程。

matlab与sql总结

总结 一个星期前老师给了一个任务,要求用GUI做成一个simulink仿真界面,通过matlab与SQL的连接,然后把仿真结果存到sql里建的数据库里。从一开始什么都不懂,到现在可以用GUI做一个简单的界面,以及matlab与sql的连接,这一个星期感慨颇多,尤其是查阅相关资料的痛苦,及找到可以借鉴资料的喜悦,到最后逐渐有了一个清晰的思想。过程如下: 一首先了解GUI 1.1 GUI简介[1,2] 图形用户界面(graphical user interface,GUI)是由窗口、光标、按键、菜单、文字说明等对象(Ob-ject)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等假如科技工作者仅仅执行数据分析、解方程等工作,一般不会考虑GUI 的制作。但是如果想向客户提供应用程序,想进行某种技术、方法的演示,想制作一个供反复使用且操作简单的专用工具,那么图形用户界面是最好的选择之一。 开发实际的应用程序时应该尽量保持程序的界面友好,因为程序界面是应用程序和用户进行交互的环境。在当前情况下,使用图形用户界面是最常用的方法。提供图形用户界面可使用户更方便地使用应用程序,不需要了解应用程序怎样执行各种命令,只需要了解图形界面组件的使用方法;同时,不需要了解各种命令是如何执行的,只要通过用户界面进行交互操作就可以正确执行程序。 在Matlab7.0中,图形用户界面是一种包含多种图形对象的界面,典型的图形界面包括图形显示区域、功能按钮空间以及用户自定义的功能菜单等。为了让界面实现各种功能,需要对各个图形对象进行布局和时间编程。这样,当用户激活对应的GUI对象时,就能执行相应的时间行为。最后,必须保存和发布自己创建的GUI,使得用户可以应用GUI对象。在Matlab中,所有对象都可以使用M文件进行编写。GUI也是一种Matlab对象,因此,可以使用M文件来创建GUI。使用M文件创建GUI的方法也是最基础的,使用其他方法创建GUI图形界面时,实现图形控件的各种功能时,也需要编写相应的程序代码。 除了使用M文件来创建GUI对象之外,Matlab还为用户开发图形界面提供了一个方便高效的集成开发环境:Matlab图形用户界面开发环境(matlab graphical user interface development envi-ronment)简称GUIDE,其主要是一个界面设计工具集。Matlab7.0将所有GUI所支持的用户控件都集成起来,同时提供界面外观、属性和行为响应方法的设置方法。除了可以使用GUIDE创建GUI之外,还可以将设计好的GUI界面保存为一个FIG资源文件,自动生成对应的M文件。该M文件包含了GUI初始化代码和组建界面布局的控制代码。 使用GUIDE创建GUI对象执行效率高,可以交互式地进行组件布局,还能生成保存和发布GUI的对应文件。 FIG文件:该文件包含GUI图形窗口及其子对象的完全描述,包含所有相关对象的属性信息,可以调用hgsave命令或者使用M文件编辑器的File>Save命令生

MATLAB 数据库

基MATLAB 数据库 linspace(a,b,c)均匀生成介于a到b的c个值,c默认为100如linspace(0,100,5)即[0 25 50 75 100]linspace(-1.3,1.3)就是生成介于-1.3到1.3的100个值meshgrid是生成网格的函数,一般是生成二维网格矩阵数据,但这里生成的是三维网格矩阵数据。先以二维数据为例,比如要绘制函数z=f(x,y)的图像x方向在[1,2,3,4,5]五个点上采样,即x=1:5y 方向在[10 20 30 40]四个点上采样,即y=10:10:40那么就一共有5*4=20个采样点。分别为(1,10) (2,10) (3,10) (4,10) (5,10)(1,20) (2,20) (3,20) (4,20) (5,20)(1,30) (2,30) (3,30) (4,30) (5,30)(1,40) (2,40) (3,40) (4,40) (5,40)命令[X,Y]=meshgrid(x,y)生成的X就是这20个采样点的横坐标,Y既是其纵坐标,即X=1 2 3 4 51 2 3 4 51 2 3 4 51 2 3 4 5Y=10 10 10 10 1020 20 20 20 2030 30 30 30 3040 40 40 40 40然后再对这20个采样点计算z的值,即Z=f(X,Y),最后用mesh(X,Y,Z)即可绘制图像三维网格数据与此类似,现在xyz三个方向都是取-1.3到1.3的100个数据,总共就是100^3即一百万个采样点,[x,y,z]=meshgrid(linspace(-1.3,1.3));中的x,y和z就分别是这一百万个采样点的三个维度上的坐标。而s=(x.^2 + (9/4)*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (1/9)*y.^2.*z.^3;就得到了函数s=f(x,y,z)=(x.^2 + (9/4)*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (1/9)*y.^2.*z.^3在这一百万个采样点中的值 size():获取矩阵的行数和列数 (1)s=size(A), 当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数。 (2)[r,c]=size(A), 当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c。 (3)size(A,n)如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的时矩阵A的行数,c=size(A,2) 该语句返回的时矩阵A 的列数。 Input() 数据输入 Disp() 输出项既可以是字符串也可以是矩阵 矩阵运算 w=gallery('cauchy',1000); %产生一个1000×1000的柯西矩阵 t1=clock; % 获取系统时间 w_norm=norm(w) %计算范数 t2=clock; %获取系统时间 t_norm=etime(t2,t1) %计算范数的耗时 t3=clock; %获取系统时间 w_normest=normest(w); %估计范数 t4=clock; %获取系统时间 t_normest=etime(t4,t3) %估计范数的耗时 特殊矩阵的创建 Zeros(m,n) 生成m*n个全零矩阵 Eye(m,n) 生成m*n个单位矩阵 One(m,n) 生成m*n个全1矩阵 Rand(m,n) 生成m*n个随机矩阵 Randn(m,n)生成m*n个标准正态分布随机矩阵linspace(a,b,c)均匀生成介于a到b的c个值,c 默认为100 magic(n) 产生n阶魔方矩阵 矩阵求值det(A) A为一个矩阵 矩阵求秩rank(A) 矩阵求迹trace(A) 即求对角线元素和也等于特征值之和a必须为方阵 矩阵的逆inv(A) 矩阵的伪逆pinv(A) 也称广义矩阵 矩阵特征值和特征向量[VB,DB]=eig(B). 多项式 poly2sym([1 3 2]) 创建多项式 ans = x^2 + 3*x + 2

Matlab数据库编程指南-Godman

Matlab数据库编程指南-Godman Matlab与数据库链接有三种方法,本文只讲述其中以ODBC的方式进行链接。 本文件包含四部分,其中第三部分为我自己写的一些数据库函数操作的函数,第四部分为网上的一些资料。 如有疑问可以邮件联系tntuyh@https://www.doczj.com/doc/6413581135.html, Godman 2009.3.30 晚Good Luck! 第一部分:读取数据其相关信息查看 1.配置数据源 (1).“控制面板”----“管理工具”——“数据源(ODBC)”——“添加”——“创建数据源名称和选择数据库文件”。具体操作见“配置数据源.gif” (2).采用修改注册表,自动配置数据源。 DB_path='D:\Program Files\MATLAB71\work\StuSystem.mdb'; DB_sourcename='Godman'; LinkDB(DB_path,DB_sourcename,1); (LinkDB为自编函数) 2.建立链接对象——database 调用格式: conna=database(‘datasourcename’,’username’,’password’); 如conna=database('SampleDB','','');其中SampleDB为上文中创建 的数据源名称,当默认情况下,数据库文件的username和password为空。 3.建立并打开游标——exec 调用格式: curs=exec(conna,'sqlquery'); 如curs=exec(conna,'select * from database') 其中conna为上文中链接对象,select * from database表示从表database中选择所有的数据. 4.把数据库中的数据读取到Matlab中——fetch 调用格式: curs=fetch(curs,RowLimit); Data=curs.Data;%把读取到的数据用变量Data保存. 如curs=fetch(curs); 把所有的数据一次全部读取到Matlab中,RowLimit为每次读取的数据参数的行数,默认为全部读取,但是全部读取会很费时间(和计算机性能很大关系)。 上述四点是matlab从数据库文件中读取数据到matlab中的基本步骤。 5.数据返回类型 从数据库中读取数据到matlab有三种数据类型(默认为元胞类型cellarray),分别为元胞类型(cellarray),数字型(numeric),结构型(structure)。可以在链接数据库之前通过setdbprefs 函数来进行设置。如果数据库文件中全部是数值型数据时最好采用numeric型的数据,这样可以使得读取速度大幅提高,特别是在大型数据读取时非常明显。我曾经从数据库中读取过100万个数据,用cellarray时用了16s,但是用numeric时却只用了8s,速度提高很大啊,对电脑配置不好的来说,很有帮助的。(还有我的电脑很烂,1.3GHz,384M内存,可能让大家见笑了…….) 调用格式: setdbprefs(‘datareturnformat’,’numric’)

matlab 读数据库

zz: Matlab数据库编程指南 (2011-03-18 17:39:10) 转载▼ 标签: 杂谈 https://www.doczj.com/doc/6413581135.html,/view/5b9fb00abb68a98271fefa61.html Matlab数据库编程指南-Godman Matlab与数据库链接有三种方法,本文只讲述其中以ODBC的方式进行链接。 本文件包含四部分,其中第三部分为我自己写的一些数据库函数操作的函数,第四部分为网上的一些资料。 如有疑问可以邮件联系tntuyh@https://www.doczj.com/doc/6413581135.html, Godman 2009.3.30 晚Good Luck! 第一部分:读取数据其相关信息查看 1. 配置数据源 (1).“控制面板”----“管理工具”——“数据源(ODBC)”——“添加”——“创建数据源名称和选择数据库文件”。具体操作见“配置数据源.gif” (2).采用修改注册表,自动配置数据源。 DB_path='D:\Program Files\MATLAB71\work\StuSystem.mdb'; DB_sourcename='Godman'; LinkDB(DB_path,DB_sourcename,1); (LinkDB为自编函数) 2. 建立链接对象——database 调用格式: conna=database(‘datasourcename’,’username’,’password’); 如conna=database('SampleDB','','');其中SampleDB为上文中创建的数据源名称,当默认情况下,数据库文件的username和password为空。 3. 建立并打开游标——exec 调用格式: curs=exec(conna,'sqlquery'); 如curs=exec(conna,'select * from database') 其中conna为上文中链接对象,select * from database表示从表database中选择所有的数据. 4. 把数据库中的数据读取到Matlab中——fetch 调用格式: curs=fetch(curs,RowLimit); Data=curs.Data;%把读取到的数据用变量Data保存. 如curs=fetch(curs); 把所有的数据一次全部读取到Matlab中,RowLimit为每次读取的数据参数的行数,默认为全部读取,但是全部读取会很费时间(和计算机性能很大关系)。 上述四点是matlab从数据库文件中读取数据到matlab中的基本步骤。 5. 数据返回类型 从数据库中读取数据到matlab有三种数据类型(默认为元胞类型cellarray),分别为元胞类型(cellarray),数字型(numeric),结构型(structure)。可以在链接数据库之前通过setdbprefs 函数来进行设置。如果数据库文件中全部是数值型数据时最好采用numeric型的数据,这样可以使得读取速度大幅提高,特别是在大型数据读取时非常明显。我曾经从数据库中读取过100万个数据,用cellarray时用了16s,但是用numeric时却只用了8s,速度提高很大啊,

DB Toolbox连接Matlab和常用的数据库

DB Toolbox连接Matlab和常用的数据库 数据库工具箱(DB Toolbox)让用户使用MATLAB强大数据分析和可视化工具功能处理存储在数据库中的数据的复杂分析。在MATLAB环境下工作,可以用结构化查询语言(SQL)命令读,写数据库的数据,进行简单和高级条件的数据查询。并且可以连接MATLAB和数据库包括Oracle,Sybase,Microsoft SQL Server和Informix。可以用单一MATLAB同时访问多个数据库,进行大数据量的事务处理。不懂SQL的用户可以用Visual Query Builder处理数据。 一、重点 1)鲁棒接口能力。用ODBC/JDBC连接数据库,包括Oracle,Sybase SQL Server,Sybase SQL Anywhere,Microsoft SQL Server, Microsoft Access,Informix Ingres. 2)SQL语法。在MATLAB环境直接执行SQL查询 3)动态导入数据。调节SQL查询,把数据导入MATLAB。数据库工具箱满足小的和大的查询。 4)数据类型保存。在数据导入和导出行为MATLAB保存数据类型 5)同时访问多个数据库。从数据库导入数据,对该数据执行计算,然后导入到另一个数据库。 6)处理大数据集的能力。 7)连续状态的数据库连接:一旦和某个数据库的连接建立后,数据库一直是打开的,除非在MATLAB中执行关闭语句。这提高了数据库的读取速度,减少了不必要的命令来调入,输出数据。 8)Visual Query Builder.该图形用户接口列数据源和所有表和字段,不懂SQL的用户可以访问和查询数据库 二、函数列表

matlab连接SQL数据库

1 首先创建数据库,就不废话了。 2 建立ODBC数据源:控制面板->管理工具->ODBC数据源->用户DNS。如图 点击“添加”

旋转“SQL Server”,“完成”。 数据源名称--编程时要用到,可任意命名。服务器选择自己指定的

选择默认数据库,下一步 下一步 旋转SQL Server验证,完成。 3 编程(来自网络)这段程序已经过我验证。

sourceName=input('Enter the source Name:','s'); %获取数据源的名称(dbtest) Timeout=logintimeout(5); %允许登录连接时间最长为5s conn=database(sourceName,'sa','123'); %获取数据库连接对象 ping(conn) %测试数据库连接状态 dbmeta=dmd(conn); %获取数据元对象 t=tables(dbmeta,'tutorial'); %获取cata为 tutorial的表名 [trow,tcolumn]=size(t); %获取返回数组的大小 index=1; for i=1:trow %由于表中既包含了系统表格 if strcmp(t{i,2},'TABLE') %又包含了用户表格,需要在其中 tablename{1,index}=t{i,1}; %找出用户表格,对t数组的每一行 index=index+1; %的第二个元素判断是 table则为用 end %户表。 end tabletosee=input('Which one would you want to use? ','s'); %获取欲查看的表格的名称 sql=['select * from ',tabletosee]; %构造查询的sql语句 curs=exec(conn,sql); %执行该sql语句 setdbprefs('DataReturnFormat','cellarray'); %设定数据返回格式 curs=fetch(curs); %获取结果集对象 numrows=rows(curs); %获取返回数据的行数 numcols=cols(curs); %获取返回数据的列

matlab调用数据库

[原创]Matlab通过ODBC的方式调用数据库 Matlab数据库编程指南-Godman Matlab与数据库链接有三种方法,本文只讲述其中以ODBC的方式进行链接。 第一部分:读取数据其相关信息查看 1. 配置数据源 “控制面板”----“管理工具”——“数据源(ODBC)”——“添加”——“创建数据源名称和选择数据库文件”(具体操作见GIF图片操作)。 2. 建立链接对象——database 调用格式: conna=database(‘datasourcename’,’username’,’password’); 如conna=database('SampleDB','','');其中SampleDB为上文中创建的数据源名称,当默认情况下,数据库文件的username和password为空。 3. 建立并打开游标——exec调用格式: curs=exec(conna,'sqlquery'); 如curs=exec(conna,'select * from database') 其中conna为上文中链接对象,select * from database表示从表database中选择所有的数据. 4. 把数据库中的数据读取到Matlab中——fetch调用格式: curs=fetch(curs,RowLimit); Data=curs.Data;%把读取到的数据用变量Data保存. 如curs=fetch(curs); 把所有的数据一次全部读取到Matlab中,RowLimit为每次读取的数据参数的行数,默认为全部读取,但是全部读取会很费时间(和计算机性能很大关系)。 上述四点是matlab从数据库文件中读取数据到matlab中的基本步骤。 5. 数据返回类型 从数据库中读取数据到matlab有三种数据类型(默认为元胞类型cellarray),分别为元胞类型(cellarray),数字型(numeric),结构型(structure)。可以在链接数据库之前通过setdbprefs 函数来进行设置。如果数据库文件中全部是数值型数据时最好采用numeric型的数据,这样可以使得读取速度大幅提高,特别是在大型数据读取时非常明显。我曾经从数据库中读取过100万个数据,用cellarray时用了16s,但是用numeric时却只用了8s,速度提高很大啊,对电脑配置不好的来说,很有帮助的。(还有我的电脑很烂,1.3GHz,384M内存,可能让大家见笑了…….) 调用格式: setdbprefs(‘datareturnformat’,’numric’) 6. 养成良好习惯,随手关闭链接对象和游标——close 当不再使用数据库的链接对象时要及时关闭,这样才能及时的释放出内存,而且每次链接后所需要的内存量是非常大的,要是不及时关闭的话对后续计算的影响将非常非常的大。( 针对烂机子而言,要是你的电脑超强也无所谓的…..) 调用格式: close(curs) close(conna) 7. 查看数据相关信息 Rows-查看数据行数 调用格式:numrows=rows(curs)

matlab数据库工具箱

Matlab数据库工具箱的使用 俗话说:“工欲善其事必先利其器”。既然是做算法研究和软件编程的,那么首先列出我的开发环境: 操作系统:Windows xp Professional SP3 开发工具:Visual Studio 2008+SP1中文版 Silverlight 2.0 Silverlight 2.0 Tools for Visual Studio 2008 Expression Blend 2 数学计算工具:Matlab 7.10.0.499(R2010a)32位 数据库:SQL Server 2005 参考资料:Microsoft MSDN 帮助文件 Microsoft Silverlight SDK Document Matlab 帮助文件 大量网上收集的资料和图书馆、实验室以及自己购买的书籍(太多了,不便列出)第一篇笔记从Matlab总结起:由于我研究的数据是海量的而且要用到Matlab做运算,我自然想起了用数据库管理数据,然后在这些数据取出,转化为符合Matlab的运算要求矩阵。幸好,Matlab有数据库工具箱能很方便的解决这个问题。 一、从数据库中读取数据 1、ODBC/JDBC连接数据库,打开Visual Query Builder定义数据源,具体做法:点击Matlab左下角的"Start"按钮,选择

“Toolbox”——“Database”——“Visual Query Builder”,如下图: 2、添加数据源,具体做法:点击下图界面中的“添加”按钮,创建新的数据源,按照自己的实际情况,一步一步地完成设置,自此新的数据源添加完毕。

Matlab连接SQL数据库【完整版】【包括32位和64位】

1、32位系统——采用简单的ODBC建桥连接 step1:【建立数据库】这个大家应该不用说了吧 step2:【建立ODBC数据源】 (1)控制面板--》管理工具--》数据源(ODBC)---》用户DSN--》添加 (2)然后再数据源名处随意命个名,比如test,服务器选择本地

(3)选择登陆数据库方式,然后【下一步】。然后选择默认数据库,选择自己的数据库,这里以master为例。 (4)一直【下一步】,直到最后。出现【测试数据库】,点击测试。

setp3:【Matlab测试】 sourceName=input('Enter the sourceName:','s'); %获取数据源的名称(本例中为test) Timeout=logintimeout(5); %允许登录连接时间最长为5s conn=database(sourceName,'sa','123'); %获取数据库连接对象 ping(conn) %测试数据库连接状态

PS:以上仅限32位系统,针对64位系统,会出现:[Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度。64位系统,通过JDBC连接。 2、32位系统——采用简单的JDBC连接 第一步,【下载Microsoft SQL Server JDBC Driver 3.0】从https://www.doczj.com/doc/6413581135.html, 下载Microsoft SQL Server JDBC Driver 3.0(4M左右),下载地址可以将上述关键字扔进Google 中搜索就得到了。解压缩可以得到很多文件,我们需要的是其中的sqljdbc4.jar和sqljdbc.jar 这两个文件。 其中后者是前者的子集,只要不出问题,直接使用前者就可以了。 第二步,【Matlab加入路径】在Matlab中加入jar。具体做法是找到"classpath.txt"文件,例如我的这个文件位置是 "D:\Matlab2010B\toolbox\local\classpath.txt",在文件的最后加入sqljdbc4.jar的完整路径,例如我的是: "D:/sqljdbc30/enu/sqljdbc4.jar",注意斜杠怎么写。第三步,【启动Matlab】,启动过程中如果没有出错,那么这个JDBC Connector就可以用了。 第四步,【查看SQL中TCP/IP以及端口号】 步骤一首先打开SSCM,如下图所示: 然后再sql server网络配置中开启TCP/IP协议,如下图所示:

matlab sql JAVA(Autocommit off)连接问题解决

Matlab建立JDBC 链接时出现的问题完美解决 如下 conn=database('SQLDataBase','sa','123','com.microsoft.sqlserver.jdbc.SQLServerDriver','jdbc:sqls erver://localhost:1433;database=SQLDataBase') conn = Instance: 'SQLDataBase' UserName: 'sa' Driver: [] URL: [] Constructor: [1x1 com.mathworks.toolbox.database.databaseConnect] Message: [1x89 char] Handle: 0 TimeOut: 0 AutoCommit: 'off' Type: 'Database Object' Get(conn,’Message’) 无法打开登录所请求的数据库"SQLDatabase"。登录失败。ClientConnectionId:7a727d2e-1525-438c-8fbe-00136b43b7ad 根源问题:选择错服务器名称了 安装后默认是SQLEXPRESS (这是错的)

解决办法: 再次在matlab中尝试

conn=database('SQLDB','sa','123','com.microsoft.sqlserver.jdbc.SQLServerDriver','jdbc:sqlserver:/ /localhost:1433;database=SQLDB') conn = Instance: 'SQLDB' UserName: 'sa' Driver: 'com.microsoft.sqlserver.jdbc.SQLServerDriver' URL: 'jdbc:sqlserver://localhost:1433;database=SQLDB' Constructor: [1x1 com.mathworks.toolbox.database.databaseConnect] Message: [] Handle: [1x1 com.microsoft.sqlserver.jdbc.SQLServerConnection] TimeOut: 0 AutoCommit: 'on' Type: 'Database Object' OK了

matlab连接SQL数据库

matlab连接SQL数据库 1 首先创建数据库,就不废话了。 2 建立ODBC数据源:控制面板->管理工具->ODBC数据源->用户DNS。如图 点击“添加”

旋转“SQL Server”,“完成”。 数据源名称--编程时要用到,可任意命名。服务器选择自己指定的

选择默认数据库,下一步 下一步

旋转SQL Server验证,完成。 3 编程(来自网络)这段程序已经过我验证。 sourceName=input('Enter the source Name:','s'); %获取数据源的名称(dbtest)Timeout=logintimeout(5); %允许登录连接时间最长为5s conn=database(sourceName,'sa','123'); %获取数据库连接对象 ping(conn) %测试数据库连接状态 dbmeta=dmd(conn); %获取数据元对象 t=tables(dbmeta,'tutorial'); %获取cata为tutorial的表名 [trow,tcolumn]=size(t); %获取返回数组的大小 index=1; for i=1:trow %由于表中既包含了系统表格 if strcmp(t{i,2},'TABLE') %又包含了用户表格,需要在其中 tablename{1,index}=t{i,1}; %找出用户表格,对t数组的每一行 index=index+1; %的第二个元素判断是table则为用 end %户表。 end tabletosee=input('Which one would you want to use? ','s'); %获取欲查看的表格的名称sql=['select * from ',tabletosee]; %构造查询的sql语句 curs=exec(conn,sql); %执行该sql语句 setdbprefs('DataReturnFormat','cellarray'); %设定数据返回格式 curs=fetch(curs); %获取结果集对象 numrows=rows(curs); %获取返回数据的行数 numcols=cols(curs); %获取返回数据的列数 disp('--------------------------------------------------------------'); %在屏幕中显示表格信息fprintf(' Information of Table %s . ',tabletosee); disp('--------------------------------------------------------------');

mysql-matlab 连接说明

有感于网上查到了大量相当有帮助的技术性文章,这里也把我前段时间实现的一个功能程序公布出来,供需者参考。 功能简介:服务器R(remote)只负责网站的运行和访问,每天获得一批新的原始数据,服务器L(local)负责后台运算,自动定时从服务器R的mysql里读取数据,在L上经过matlab编写的算法程序运算后再远程将结果写回R的数据库以实现网站的更新。全程无人值守。(L负责后台运算,安装matlab;R负责网络访问,安装mysql) 不同于网络上查到的实现方法,本程序全部在m文件里编写,不用php 或c++做接口,宗旨就是用简单的方法实现简单的想法。(以下假定suanfa.m子程序已经存在) 1.编写import_data.m子程序,实现从mysql读取数据到matlab中. 1)下载mysql的jdbc的java驱动,安装到*:\Program Files\MATLAB71\java\jar\toolbox路径下; 2)此“路径\文件名”添到*:\Program Files\MATLAB71\toolbox\local下的 classpath.txt文件中; 3)设置mysql下的数据库名称为带有“mysql ”后缀的,比如:abcmysql; 4)服务器R的mysql下,输入“grant all on *.* to username@"L的IP" Identified by "password",允许L远程访问; 5)复制如下代码到import_data文件中 function MM=import_data(); timeoutA=logintimeout(5) % Set maximum time allowed for establishing a connection. connA = database('mysql', 'username', 'password','com.mysql.jdbc.Driver','jdbc:mysql: //R的IP:3306/abc') ping(connA) % Check the database status. cursorA=exec(connA,'SELECT ALL CONLUMA,CONLUMB,CONLUMC FROM tablename); setdbprefs('DataReturnFormat','numeric'); %set numeric format cursorA=fetch(cursorA) ; % Fetch all rows of data. MM=cursorA.Data; % Display the data,save the data in MM close(cursorA) ; % Close the cursor and the connection. close(connA) 其中username,password,L\R的IP,数据库名称abc,tablename,sql语句都是要依实际修改的。 2.编写export_data.m子程序,实现从matlab写回数据到mysql中: 原理类似, (tablename2的表要事先建好u)复制以下程序: timeoutA=logintimeout(5) % Set maximum time allowed for establishing a connection. connA = database('mysql', 'username', 'password','com.mysql.jdbc.Driver','jdbc:mysql: //R的IP:3306/abc') ping(connA) % Check the database status. %delete the records before updating cursorA=exec(connA,'delete tablename FROM tablename'); Colnames = {'COLUMNA','COLUMNB','rCOLUMNC'};%updating fastinsert(connA, 'tablename2', Colnames,newdata); close(cursorA) ;

相关主题
文本预览
相关文档 最新文档