![b2e7705cf09063bf5f4c2c54ad21d667.png](https://i-blog.csdnimg.cn/blog_migrate/60dde18342a16bcad4fa72a6e3c33a4f.png)
matlab代码转c/c++详细教程
转化分为4个步骤,还有一点特别注意,在最后
1.将matlab代码的输入输出删除
如 a = input("a");,类似于这种matlab语句先删除,为什么要这样?请看第二步
这里还有一点注意事项,请看第5步.
2.将代码封装为一个函数
模板如下:
function [返回参数列表] = func1(输入参数)
你的程序放在这里,不要有输入输出语句
end
将输入语句全部换成函数的输入参数,例如,上面的a = input("a")删除以后,将a放入输入参数,有多少个放多少个,用“,”隔开,所以说要先删除输入输出语句,输入作为函数的入口参数,输出作为返回值:
function [返回参数列表] = func1(a)
你的程序放在这里,不要有输入输出语句
end
然后将你的代码放在function里面,不管有多复杂,例如:
function func1(m,b,L,n,H,Q,E,u,C0)
%下面的代码不用管
l=L/n;
h=H/n;
Q=Q./(b*l);
a = [0.0,0.0,0.0,0.0];
for i=1:m
a(i)=u(i)*h;
end
e = [0.0,0.0,0.0,0.0];
for i=1:m-1
e(i)=E(i)*l/h;
end
A = [0.0,0.0,0.0,0.0;0.0,0.0,0.0,0.0;0.0,0.0,0.0,0.0;0.0,0.0,0.0,0.0;];
A(1,1)=a(1)+e(1);
A(m,m)=a(m)+e(m-1);
A(1,2)=-e(1);
A(m,m-1)=-e(m-1);
for i=2:m-1
A(i,i)=a(i)+e(i-1)+e(i);
A(i,i-1)=-e(i-1);
A(i,i+1)=-e(i);
end
a=a';
C0=C0';
D1=a.*C0;
D1(1)=D1(1)+Q(1)*l;
C1=inv(A)*D1;
D2=a.*D1;
D2(1)=D2(1)+Q(2)*l;
C2=inv(A)*D2;
D3=a.*D2;
D3(1)=D3(1)+Q(3)*l;
C3=inv(A)*D3;
D4=a.*D3;
D4(1)=D4(1)+Q(4)*l;
C4=inv(A)*D4;
CC=[C1,C2,C3,C4];
%上面的代码不用管
end
中间全部都是待转换的matlab代码,不用管
3.新创建一个文件,用于说明函数入口参数的类型
![343c72206762da1c9e7ffcf89eb6a806.png](https://i-blog.csdnimg.cn/blog_migrate/2d3e7528e08b40c598fb1053652ce458.png)
按照以下格式编写:
clear
4.使用matlab coder开始转换
下面的操作就是点NEXT
![a571e12f1cbe6bd898c721448fe42290.png](https://i-blog.csdnimg.cn/blog_migrate/6840b211790819d5e416fd6e83062bfc.png)
- 找到matlab coder
![3c66816d465c4fb45840be4e08070331.png](https://i-blog.csdnimg.cn/blog_migrate/430c2962994219442f4a2f2017e6726e.png)
- 打开我们之间用函数封装的代码
![8ccc4589b46e196fc4f16ad8239a78ac.png](https://i-blog.csdnimg.cn/blog_migrate/6af02350f24af8b5425cbcd690327c73.jpeg)
- NEXT
![ed9a7533a40f5bf5009414d825b4d7b8.png](https://i-blog.csdnimg.cn/blog_migrate/19ad4add5397c7c9691c12b138b7af7a.jpeg)
- 选择第3步编写的文件
![eb9af3e8913744bcb4fc1e802572046c.png](https://i-blog.csdnimg.cn/blog_migrate/4b39a65de1c541e62e4f8db1153510ad.jpeg)
- 检查一下
![ff94e610a835d62db25f968b3ffc5bc2.png](https://i-blog.csdnimg.cn/blog_migrate/7afdd4e32333b61e8babeaddf37e1ff9.png)
![7caf18fe4ac6859e1254450165cfffb8.png](https://i-blog.csdnimg.cn/blog_migrate/99f7d556a250ddb81d44c60553efd47c.jpeg)
![b006651b64fb556c3bbad63853a3dffa.png](https://i-blog.csdnimg.cn/blog_migrate/70f308d8e39080f0b15c0b300465896b.jpeg)
到这里就大功告成了,文件信息如下
![8da15173e0ffea4bc65af36d296d6c5a.png](https://i-blog.csdnimg.cn/blog_migrate/9336bb7ffb475cd2e3eec734ae566b36.jpeg)
5.注意
在第一步的时候,除了删除输入输出语句外,还需要改一些未声明的变量,例如:
for i=1:m
a(i)=u(i)*h;
end
在matlab中 a(i)是可以直接使用不需要声明的,但是在转换的时候需要先人为定义a这个数据类型,如:
a = [0.0,0.0,0.0,0.0];
for i=1:m
a(i)=u(i)*h;
end