58 matlab 编程

0 引言

matlab中有些东西记录一下

1 matlab coder

matlab命令行窗口输入:

coder

回车即可打开matlab coder 窗口。接着,matlab将引导你把matlab格式的function改成c/c++ 风格。

2 matlab基本操作

(1) x(:)

将矩阵转化为列向量,一列一列地拼起来

(2)ndgrid 网格函数

  1 [X1,X2, X3] = ndgrid(y1,y2,y3)

  X1以y1为列向量,采用y2的列数向右复制;然后采用y3的层数,向上复制。

  X2以y2为行向量,采用y1的行数向下复制;然后采用y3的层数,向上复制。

  X3以y3为层向量,采用y1的行数和y2的列数,复制y3的每一个元素。

[x1,x2,x3] = ndgrid(1:3, 1:3, 1:3)

x1(:,:,1) =
     1     1     1
     2     2     2
     3     3     3
x1(:,:,2) =
     1     1     1
     2     2     2
     3     3     3
x1(:,:,3) =
     1     1     1
     2     2     2
     3     3     3

x2(:,:,1) =
     1     2     3
     1     2     3
     1     2     3
x2(:,:,2) =
     1     2     3
     1     2     3
     1     2     3
x2(:,:,3) =
     1     2     3
     1     2     3
     1     2     3

x3(:,:,1) =
     1     1     1
     1     1     1
     1     1     1
x3(:,:,2) =
     2     2     2
     2     2     2
     2     2     2
x3(:,:,3) =
     3     3     3
     3     3     3
     3     3     3

 (3) matlab 用符号进行运算

>> syms e u
>> f( e, u ) = 2 + 3 * ( e + 2 ) * u
f(e, u) =
u*(3*e + 6) + 2
>> f( 3, 4 )
ans =
62

 (4) matlab绘制解空间

三元一次不等式的解空间
1 - x + y + z >= 0 
1 + x - y + z >= 0
1 + x + y - z >= 0
1 - x - y - z >= 0

  RegionPlot3D[1 - x + y + z >= 0 && 1 + x - y + z >= 0 && 1 + x + y - z >= 0 && 

  1 - x - y - z >= 0, {x, -1, 1}, {y, -1, 1}, {z, -1, 1}]

http://www.ilovematlab.cn/thread-266232-1-1.html

 3 matlab中使用mex

(1) Writing MATLAB C/MEX Code
https://www.researchgate.net/profile/Hazim_Tahir/post/How_can_I_convert_MATLAB_code_to_c_c_code/attachment/59d64455c49f478072eacce0/AS%3A273746584113162%401442277679173/download/cmex.pdf

(2) http://blog.sciencenet.cn/blog-261330-638774.html MATLAB是矩阵语言,是为向量和矩阵操作设计的,一般来说,如果运算可以用向量或矩阵实现,其运算速度是非常快的。但若运算中涉及到大量的循环处理,MATLAB的速度的令人难以忍受的。
解决方法之一为,当必须使用for循环时,把它写为MEX文件,这样不必在每次运行循环中的语句时MATLAB都对它们进行解释。

 

posted @ 2019-03-19 22:17  十步一杀2017  阅读(336)  评论(0编辑  收藏  举报