matlab拟合对数函数的图像和性质,怎么弄

(4)圆整函数和求余函数:ceil(向正无穷的圆整函数)、fix(向0圆整函数)、floor、mod(模除求余)、rem(求余数)、round(向最近整数圆整函数)、sign(符号函数)

(6)特殊函数:erf(误差函数)、erfc(误差补)、erfcx(刻度误差补)、erfinv(逆误差补)、expint(指数积分)、gamma、gammainc(不完全伽马函数)、gammaln(伽马函数的对数)、isprime(质数为真函数)、rats(数值有理化函数)。

标准数组生成函数&数组操作函数

1、 标准数组生成函数

标准数组生成函数指令:diag(对角形)、eye单位数组)、magic(魔方数组)、ones(全1)、rand(均分分布随机数组)、randn(正态分布随机数组)、zeros(全0数组)、gallery(产生特殊的测试矩阵)。

:cat(把大小相同的若干数组,沿“指定维”方向,串接成高维数组)、

(提取对角元素,生成对角阵)、flipdim(以指定维的对称轴进行翻转)、

(以数组“垂直中线”为对称轴,交换左右对称位置上的数组元素)、

(以数组“水平中线”为对称轴,

上的数组元素)、kron(按Kronecker乘法规则产生“积”数组)、permute(按指定的次序,对矩阵各维的次序进行重组)、repmat(按指定维上的数目铺放模块数组)、

(总元素数不变,改变各维的大小)、

(逆时针旋转二维数组90度)、tril(下三角阵)、triu(上三角阵)。


【eg.2】数组转置、对称交换、旋转操作

图12 数组转置、对称交换、旋转操作

【eg.3】多次寻访扩展、合成扩展

图13  多次寻访扩展、合成扩展


A(s)=0 %利用“单下标”数组对A的元素重新赋值


【eg.5】对列(行)同加一个数(3种操作方法)

图15 对列(行)同加一个数(3种操作方法)


【eg.6】逻辑函数的运用


图15 逻辑函数的运用

创建高维数数组最常用的4种方法是:

(1)直接通过通过“全下标”元素赋值方式创建高维数组;

(2)由若干同样大小的低维数组组合成高维数组;

【eg.1】“全下标”元素赋值方法创建高维数组

图16 “全下标”元素赋值方法创建高维数组


【eg.2】低维数组合成高维数组

图17 低维数组合成高维数组


图18 rand直接创建标准高维数组


(1)cat指令:第一个输入量表示“表示串接方向的维号”,本例“3”,表示“沿第三维方向串接”。

(2)repmat指令:第一个输入量“模块数组”。第二个输入量“各维方向”铺放“模块数组”的数目。本例“[1,1,3]”表示:在“行维方向”、“列维方向”各铺1块,而在“页维方向”铺3块。

(3)reshape指令:第一个输入量“待重组”的数组,第二、三、四输入量是要生成的数组的“行数、列数、页数”。

(1)数组的维数和ndims指令

“行”数组(或称向量)是一维数组,即“维数为1”。而矩阵是二维数组,即“维数为2”。

指令ndims(A):直接给出数组A的维数。

(2)数组的大小和size指令

不管A数组的维数是多少,

指令size(A):给出A各维的大小,

【eg.1】获取数组A的维数、大小和长度信息

图20 获取数组A的维数、大小和长度信息


3、高维数组构作&操作函数


表3 高维数组操作函数&标准数组生成函数
把“大小”相同的若干数组,沿“指定维”方向,串接成高维数组
以指定“维的平分面”,交换对称位置上的元素
广义反转置,permute的反操作
按指定维上的数目铺放模块数组,以形成更大的数组
总元素数不变,改变各维大小
数组的“维序号左移”重组
撤销长度为1的“孤维”,使数组降维

【eg.1】数组元素对称交换指令flipdim

:第一个输入量A为备操作的数组,第二个输入量k为指定对称面。“1”表示与数组“行”平行的平分面;“2”表示与数组“列”平行的平分面;“3”表示与“数组页”平行的平分面。

【eg.2】数组的“维序号左移”重组

【eg.3】广义非共轭转置

:第一个输入量是被转置数组,第二个输入量是指定转置方法的行数组。

permute操作更为一般,实现“维序号”任意排列。

图23 广义非共轭转置


【eg.4】“孤维”的撤销和降维

图24 “孤维”的撤销和降维


【eg.5】赋“空阵”值操作

“非数”NaN&“空”数组

0/0、无穷/无穷、0*无穷等运算都会产生

性质:(1)传递性(2)不可比较性(3)不能进行关系运算(4)属性判断

>> a=nan %该指令想计算“a等于非数吗”,但不能得到正确结果 >> a==nan %该指令想计算“a等于非数吗”,但不能得到正确结果 >> a~=nan %该指令想计算“a不是非数吗”也不能得到正确判断结果

【eg.2】“空”数组

某维长度为0或若干维长度均为0的数组就是“空”数组。判断数组是否为“空”数组指令isempty。“空”数组在运算中不具备传递性,可以对其他非空数组赋值,可以收缩数组的大小,不能改变那数组的维数。

“空”数组:(1)创建(2)“空”数组的属性(3)不具备传递性(4)不可比较(5)

关系操作&逻辑操作

【eg.】关系运算运用:求近似极限,利用非数NaN修补图形缺口。

图28 关系运算之求近似极限


(1)负数和零没有对数,即:N > 0。(ab= N 没有一个b值使得N等于零或小于零)

⑷TIFF(Tagged Iamge File Format):处理1位、4位、8位、24位非压缩图像,1位、4位、8位、24位packbit压缩图像,1位CCITT压缩图像等。文件内容包括文件头、参数指针表与参数域、参数数据表和图像数据四部分。

其中,多帧图像阵列是由多帧图像组成的,每一帧图像可以为前四种图像中的一种,但组成一个多帧图像阵列的图像必须为同一种。cat函数可以将具有相同尺寸的几个独立图像存成多帧文件。对于多帧图像也可以从中提取单帧。

2.在MATLAB系统中,要将一个类型的图像文件转换成另一个类型的图像文件,只需将前一个文件的图像数据用imread读出,再用imwrite以适当的格式写到后一个图像文件中去即可。另外,要将灰度图像I转换成RGB图像,可运用cat指令。cat函数可以把一些单一的图像合并成图像序列。在图像序列中每个图像需有相同的大小,如果是索引图像,色图也要一致。

l         dither:用抖动法(dithering)转换图像。该函数通过颜色抖动(颜色抖动即改变边沿像素的颜色,使像素周围的颜色近似于原始图像的颜色,从而以空间分辨率来换取颜色分辨率)来增强输出图像的颜色分辨率。该函数可以把RGB图像转换成索引图像或把灰度图像转换成二值图像。

其作用是将文件名用字符串filename表示的,扩展名用fmt表示的图像文件中的数据读到矩阵A中。如果filename所指的为灰度级图像,则A为一个二维矩阵;如果filename所指的为RGB图像,则A为一个m×n×3的三维矩阵。Filename表示的文件名必须在MATLAB的搜索路径范围内,否则需指出其完整路径。

上面一些参数的含义如下:idx是指读取图标(cur、ico、tiff)文件中第idx个图像,默认值为1。’frame’,idx是指读取gif文件中的图像帧,idx值可以是数量、向量或’all’。ref是指整数值。alpha是指透明度。

显示图像的最基本的手段是使用image函数。该函数还产生了图像对象的句柄,并允许对对象的属性进行设置。此外,imagesc函数也具有image的功能,所不同的是imagesc函数还自动将输入数据比例化,以全色图的方式显示。

l         warp:显示图像的纹理表面图。前面提到的图像显示手段都只能在二维平面上显示,MATLAB6.5的一个强大功能是能将平面图像显示在空间三维曲面上。这是由warp函数的纹理成图功能来实现的,该功能能通过双线性插值将平面图像投影到三维曲面上。

点运算将输入图像映射为输出图像,输出图像每个像素点的灰度值仅由对应的输入像素点的值决定。它常用于改变图像的灰度范围及分布,是图像数字化及图像显示的重要工具。点运算因其作用性质,也被称为对比度增强、对比度拉伸或灰度变换。在真正进行图像处理之前,有时可以用点运算来克服图像数字化设备的局限性。

点运算可完全由灰度变换(gray-scale transformation)函数s=f (r)决定,后者描述了输入灰度级与输出灰度级之间的映射关系。图像的点运算分为线性点运算和非线性点运算两种。

如图3.1,当a>1时,输出图像对比度增大;当a<1时,输出图像对比度降低;当a=1,b=0时,输出图像就是输入图像的简单复制;当a=1,b≠0时,仅使输出图像的灰度值上移或下移,其效果是使整个图像更亮或更暗。如果a为负值,暗区域将变亮,亮区域将变暗,点运算完成了图像求补。

直方图均衡化也是一种非常常用的非线性点运算。它是指将一个已知灰度分布的图像使用某种非线性灰度变换函数进行计算,使运算结果变成一幅具有均匀灰度分布的新图像。经过直方图均衡化的点运算处理后,实际的直方图将呈现参差不齐的外形,这是由于灰度级的可能个数是限造成的。在一些灰度级处可能没有像素,在另外一些灰度级处则像素很拥挤。

默认情况下,matlab将图象中的数据存储为double型,即64位浮点数;matlab还支持无符号整型(uint8和uint16);uint型的优势在于节省空间,涉及运算时要转换成double型。

dither() 通过颜色抖动,把真彩图像转换成索引图像或灰度图象转换成二值图像

gray2ind() 将灰度图像(或二值图像)转换成索引图像

grayslice() 通过设定的阈值将灰度图象转换成索引图像

im2bw() 通过设定亮度阈值将灰度、真彩、索引图象转换成二值图像

ind2gray() 将索引图象转换成灰度图象

ind2rgb() 将索引图象转换成真彩色图像

mat2gray() 将一个数据矩阵转换成一幅灰度图象

图像类型与类型间的转换

1。索引图像:包括一个数据矩阵X和一个色图阵MAP。矩阵元素值指向MAP中的特定颜色向量。

2。灰度图像:数据矩阵I,I中的数据代表了颜色灰度值。矩阵中的元素可以是double类型、8位或16位无符号的整数类型。

3。RGB图像:即真彩图像。矩阵中每个元素为一个数组,数组的元素定义了像素的红、绿、蓝颜色值。RGB数组可以是double类型、8位或16位无符号的整数类型。

4。二值图像:一个数据阵列,每个象素只能取0或1。

矩阵求共轭(实部相同,虚部相反):conj(X)

mesh(X,Y,Z,C):其中C是用来定义相应点颜色等属性的数组

mesh(x,y,z)绘制网面图,是最基本的曲面图形命令,其中x、y、z是同阶矩阵,表示曲面三维数据;

contour(x,y,z)绘制等高线图,与mesh用法类似,可指定z的范围;

contour3(x,y,z)绘制三维等高线图,与mesh用法类似,可指定z的范围。

例:求方程组的空间曲线

其中.*为数组相乘,.^为数组乘方

matlab实现离散余弦变换压缩(JPEG压缩原理)

比部分上篇文章已经介绍过,为了保持文章的完整性,继续保留。

JPEG图像压缩算法:

输入图像被分成8*8或16*16的小块,然后对每一小块进行二维DCT(离散余弦变换)变换,变换后的系数量化、编码并传输;

JPEG文件解码量化了的DCT系数,对每一块计算二维逆DCT变换,最后把结果块拼接成一个完整的图像。在DCT变换后舍弃那些不严重影响图像重构的接近0的系数。

DCT变换的特点是变换后图像大部分能量集中在左上角,因为左上放映原图像低频部分数据,右下反映原图像高频部分数据。而图像的能量通常集中在低频部分。

%该图片在安装matlab的目录中找,原图为灰度图象

%对原图像进行DCT变换

%数据压缩,丢弃右下角高频数据

%进行DCT反变换,得到压缩后的图像

I=imread('图像文件名') :读取图像数据,保存在矩阵I中;

D=dctmtx(n) :二维离散余弦变换函数,返回n*n离散余弦变换矩阵。

一个n*n的变换矩阵T被定义成:

B=blkproc(A,[m n],fun,P1,P2...) :块操作函数。对图像A的每个不同的m*n块应用fun函数,P1,P2等为fun函数参数。在图像边缘用0来扩展;只有当fun的返回矩阵是m*n矩阵时,B和A的大小才相同。

figure:强制生成一个新的个绘图窗口;

其中fun为待解方程或方程组的文件名;

x0位求解方程的初始向量或矩阵;

option为设置命令参数

m文件必须以function为文件头,调用符为@;文件名必须与定义的函数名相同;fsolve()主要求解复杂非线性方程和方程组,求解过程是一个逼近过程。

其中a,b分别为上下限

%矩阵的行之间用分号隔开,元素之间用逗号或空格

例:limit(F,x,a,left);对表达式F求极限,变量为x,从左边趋近a。

matlab之基本绘图函数

clear:清空内存中的变量;

figure:强制生成一个新的个绘图窗口;

fplot(函数表达式,绘图区间);

plot(横坐标向量,纵坐标向量,颜色/线形等参数)

2).我有一组x,y,z值,非规则排列,如何在Matlab中绘图?

3).如何在给定句柄的axis里绘图?

4).由Matlab符号运算得到的公式怎么才能将数据代进去运算?

5).在Matlab中如何求最值点?如何求一维数组的极值?

6).Matlab中如何作线性拟合/线性回归/多元线性回归?

9).Matlab中如何作二维数据的插值?

10).Matlab中如何绘制三维数据阵?

11).Matlab中如何注解一大段代码?

12).Matlab中如何计算程序运行的时间?

13).Matlab中如何改变默认的工作路径?

15).如何在Matlab中实现交互操作?

16).Matlab中为什么只能在小数点后显示四位?

17).Matlab如何在命令窗口按照格式输出?

18).如何在Matlab中画隐函数曲线?

19).Matlab中什么函数可以删除矩阵的某一行或列?

20).Matlab中能开的最大数组是由什么决定的?

21).如何在Matlab中添加新的工具箱?

24).如何将Matlab绘制的三维网格图帖到word里?

25).请问可以查看Matlab中函数的源代码吗?

26).Matlab有没有求矩阵行数/列数/维数的函数?

28).Matlab中有没有画圆或椭圆的函数?

30).Matlab如何产生均匀分布的白噪声?

32).请问在Matlab中怎样输入特殊符号啊或者上标、下标?

35).Matlab如何启动时执行规定的文件?

37).大量数据点Matlab绘图为什么很慢?

38).Matlab中如何求解广义积分?即积分限到有无穷的或者有歧

异点的积分(瑕积分)?

39).为什么我的Matlab程序这么慢?

40).Matlab中如何作线性拟合/线性回归/多元线性回归?

其实也出来很久了,不知大家有没有注意到.

虽然是针对繁体中文系统的,我试过在简体

中文系统下一样可以用。

2)我有一组x,y,z值,非规则排列,如何在Matlab中绘图?

3)如何在给定句柄的axis里绘图?

4)由Matlab符号运算得到的公式怎么才能将数据代进去运算?

使用subs(),或先将值赋予一个符号变量,然后用eval()

5)在Matlab中如何求最值点?如何求一维数组的极值?

返回的是极大值和极小值

6)Matlab中如何作线性拟合/线性回归/多元线性回归?

则可以得到最小二乘意义上的拟合系数

9)Matlab中如何作二维数据的插值?

10)Matlab中如何绘制三维数据阵?

如果使用matlab,打开帮助窗口,在目录树上找到

如果图形复杂,建议使用Tecplot,参见Tecplot手册中数据格式,将你

面和任意平面的截面图。

11)Matlab中如何注解一大段代码?

12)Matlab中如何计算程序运行的时间?

13)Matlab中如何改变默认的工作路径?

14)Matlab如何改变默认的图形字体?

15)如何在Matlab中实现交互操作?

如果只在命令窗口进行交互操作,请参见demo中的例子,主要是

16)Matlab中为什么只能在小数点后显示四位?

用format命令来改变命令窗口数字的显示格式和精度,但不会影

响matlab的计算精度,matlab的矩阵运算默认都是双精度浮点型运算。

17)Matlab如何在命令窗口按照格式输出?

18)如何在Matlab中画隐函数曲线?

19)Matlab中什么函数可以删除矩阵的某一行或列?

20)Matlab中能开的最大数组是由什么决定的?

21)如何在Matlab中添加新的工具箱?

如果是Matlab安装光盘上的工具箱,重新执行安装程序,选中即可。

如果是单独下载的工具箱,一般情况下仅需要把新的工具箱解压到某

以访问。如果能够显示新设置的路径,则表明该工具箱可以使用了。

具体请看工具箱自己代的README文件。

建议使用matlab自己提供的函数来读写简单安全,或者参考:

23)如何得到contour线上的坐标点?

这里得到的x和y都是cell数组,用x{1}/y{1}来得到每条线上的坐标对,

注意,每条线的最后一个数据是NaN

24)如何将Matlab绘制的三维网格图帖到word里?

如果需要位图,好处是所见即所得,坏处是图像精度差,不能放缩:

经常地,按照Metafile方式粘贴的图片曲线会出现锯齿,最好的方式是

1.将需要拷贝的图作为当前窗口

,不会显示图片内容,但可以打印,word XP即可显示,又可打印。

5.如果不满意,可以在word中双击编辑,如果安装有Adobe

Illustrator等矢量图像编辑软件,也可以进行编辑。

25)请问可以查看Matlab中函数的源代码吗?

Matlab除了buildin函数和mex/dll文件看不到原码,其他如工具箱等都可

以直接看到代码,首先确认该文件安装在matlab中,即which

26)Matlab有没有求矩阵行数/列数/维数的函数?

size(A)返回A各个维的最大元素个数

[m,n]=size(A)如果A是二维数组,返回行数和列数

nnz(A)返回A中非0元素的个数

能由于操作系统的原因,有时会出现死机和等待的情况。

28)Matlab中有没有画圆或椭圆的函数?

没有,Matlab没有提供直接绘圆的图元函数,需要自己写代码,其实

Matlab默认的矩阵数据结构都是双精度浮点型,即64位来表示一个数

字,大多数的函数和操作都定义在double数据结构,如果你需要

把double的数据转换为整形,然后再参与运算,需要使用

如果为了节省内存,只进行赋值、打印等简单操作,可以参

30)Matlab如何产生均匀分布的白噪声?

可以,如果使用medit,设置断点后可以用鼠标移到所看的变量上,显

示当前的值,或者在命令窗口打该变量名直接回车。如果在代码中实

32)请问在Matlab中怎样输入特殊符号啊或者上标、下标?

这里是一个后台执行一个需要外部输入的DOS命令的例子,需要的输

入实事先都写在同目录下的input.txt文件中:

34)Matlab如何加载输入文件(批处理模式) ?

PC上可以使用matlab /r参数来在matlab启动的时候直接加载运行m文件

以上执行方式都可以通过脚本文件实现批处理

35)Matlab如何启动时执行规定的文件?

37)大量数据点Matlab绘图为什么很慢?

1.首先看能否用已有函数对整个矩阵绘图,比

2.如果必须一点一点/或者一条线一条线的添加,最好作如下

38)Matlab中如何求解广义积分?即积分限到有无穷的或者有歧

异点的积分(瑕积分)?

Matlab的quad/quad8只能作定积分,广义积分需要自己来写程序逼近,

2.把为inf/-inf或者歧义点的积分限设置为一个初始值,k=1

4.然后朝着inf/-inf或者歧义点移动一个步长,然后计算定积分

39)为什么我的Matlab程序这么慢?

我们工学院的收发室的门上贴着一张小纸条,写的是

大多数的人在遇到问题的时候,总是责备计算机如何如何,别人如何

如何,其实,最最主要的因素是在于自己。

一个程序运行快慢,有很多因素决定,最主要的是算法,简炼而优美

的的数学公式胜过100遍的优化。能从算法上改进,才能比别人有根

本的优势。计算机也很重要,以前我总把自己用的PC看成万能的加

以崇拜,对UNIX嗤之以鼻,结果当自己真正开始算起来,才知道差

别有多大。搞大型数值计算的,没有好的工作站或者并行系统,就输

在了起跑线上了。然后是程序的优化,看看变量是否占用太多内存,

看看是否有功能重复的模块或者计算,经常的是用牺牲内存来换取速

度,具体取舍,具体需要来决定。用profile看看哪些语句占用时间最

多,然后把核心部分进行优化。

如果是使用Matlab,使用vectorization和矩阵整体操作的代码要比大量

的for循环快很多,eval/inline函数如果出现在核心循环,也会让速度下

matlab默认只提供了多项式拟合的函数polyfit,对于其他稍微简单

一点的拟合,如标准的指数、对数、高阶多项式拟合,都有解析公式,参见:

对于更加复杂的非线性函数,建议使用Mathematica或者DataFit

可以拟合任意复杂的表达式。

DataFit可以自定义拟合模型,适用于复杂系统的拟合。

Matlab的信号处理工具箱是信号算法文件的集合,它处理的基本对象是信号与系统,信号处理工具箱位于目录、Toolbox\Signal下,利用工具箱中的文件可以实现信号的变换、滤波、谱估计、滤波器设计等。在其它的环境如Vc下如果能调用Matlab工具箱中的文件,会大大地加快一些算法的实现,同时其可靠性也很高。

下面例程是在Vc下建一个基于对话框的应用程序,在对话框中设置一个Button控件OnMatlabEngine.,在对话框 .cpp文件中加入”engine.h” 和“math.h” 头文件,下面给出部分程序清单。

double Fs[1]={1024};//因为Matlab所有参与运算的参数都是矩阵的形式,因而下列几行将参数转变

上述程序在Vc下编译需要将 libeng.dll和libmx.dll两个动态库利用以下的命令:

利用Matlab自身的编译器调用工具箱中的函数

Matlab的编译器可将Matlab的M文件转换为为C或C++的源代码以产生完全脱离Matlab运行环境的独立的运用程序,但Matlab本身的资料说明编译器如用来建立独立的运用程序,不能调用Matlab工具箱中的函数,这非常不利于搞一些特殊的算法。本人研究了一段时间发现,工具箱中的函数既然是M文件就一定可以用编译器来编译,以提供如Vc的调用函数,但是编译器只能编译一个独立的M文件,即这个 M文件不依赖于其他的M文件。如果M文件中又调用了其他的M文件,可将被调用的M文件拷贝到调用M文件的相应位置,作适当的改动就可以用于编译器编译。编译器不支持图形函数,所以M文件中如有图形函数需注释掉。

C MATH库,建议采用前述的方法将动态连接改为静态连接。对于C/C++编译环境的设置,在Matlab command窗口下运行mex –setup 然后依提示操作,而对于C/C++连接环境的设置,运行mbuild –setup依提示操作即可。

下面给出利用编译器将Matlab工具箱中psd.m文件生成可供Vc调用的函数。

将psd.m文件拷贝一份至Matlab\bin目录下,改写相应调用的M文件如nargchk.m, hanning.m等。为生成的代码简洁,对于采集数据处理输入参数很明了的情况下可作大量的删减,最终使psd.m成为一个不依赖于其他M文件的独立的M文件,注意千万注释掉作图代码,最终改成如下形式,限于篇幅给出关键的几步:

………………………………….

以上只要稍懂Matlab语言和信号处理知识就可完成这项工作。

Vc下建立一个基于对话框的文件,然后在对话框里加一个Button控件OnButtonPsd

c代码声明加入Vc的包含文件和生成的.C的包含文件之间

为了简洁且便于处理将生成的c函数稍改动,给出部分代码如下:

如上生成的程序可读性不太好,而生成的c++代码则可读性较好,但千万注意只能用 Matlab的MATH库,不可用c++的MATH库,否则编译会出错,限于篇幅在此不述。

3)利用Matcom调用工具箱中的函数

Matcom编译M文件,先将M文件按照与Matcom的cpp库的对应关系翻译为cpp源代码,然后用对应版本的c编译器将cpp文件编译成相应的exe或dll文件,所以第一次运行要指定c编译器的路径,否则无法编译,指定好的编译信息就写在Matcom\bin\matcom.ini文件中,不过这一步按装matcom时,它自动寻找编译器并将其写入matcom.ini文件中,matcom4.5版中使用TeeChart3.0 OCX控件,因而它支持图形操作。

我们依然用上述的testwin.m文件,不要将图形函数注释掉,利用Mideva来生成可被Vc调用的信号处理程序。

datax[];//数据采集的数据存于此数组中

可见利用Matcom进行M文件转换非常的容易,生成的代码可读性很好,以上的转换同时生成了可供Vc调用的动态连接库,其使用和一般的动态库一样使用。同时需指明Matcom不仅可转换独立的不依赖于其它M文件的M文件,同时可转换调用其它M文件的M文件嵌套。条件是这此M文件在同一个目录下面,如前所述的psd.m可直接用上述方法转换,生成了多个重载形式的psd函数

结论:利用Mtlab引擎调用工具箱中的函数可节省大量的系统资源,应用程序整体性能较好,但不可脱离Matlab 的环境运行。用Matlab编译器进行工具箱函数的调用,须转换相应的M文件使其成为独立的M文件,且不支持图形函数,转换的代码可读性不太好。用Matcom 进行转换非常方便,生成的代码可读性很好,支持图形函数,且代码执行的速度比不转换平均要快1.5倍以上。以上程序在Vc++ 6.0,Matlab5.2,Matcom4.5中调试通过,以上方法在工程实践中已得到很好的运用。

摘要:本文详述了在Vc环境下如何利用Matlab工具箱进行数字信号处理,全文以Matlab工具箱中功率谱密度分析函数为例,介绍了通过Matlab自带的引擎、Matlab自身的编译器以及利用MathTools公司的Matcom进行对工具箱函数的调用。

我要回帖

更多关于 对数函数的图像和性质 的文章

 

随机推荐