Matlab 代码 转成 C/C++ 代码

matlab代码转c/c++详细教程

matlab代码转c/c++详细教程

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.新创建一个文件,用于说明函数入口参数的类型

按照以下格式编写:

clear all;
clc;
close all;

%下面是输入参数的样例
m = 4;
b = 1000;
L = 4000;
n = 4;
H = 120;
Q = [0.1,0.3,0.4,0.2];
E = [0.25,0.25,0.25,0.25];
u = [4,4,4,4];
C0 = [0.1 0.1 0.2 0.3];
a = []
%上面是输入参数的样例
%下面是函数的调用
func1(m,b,L,n,H,Q,E,u,C0);

4.使用matlab coder开始转换

下面的操作就是点NEXT

  • 找到matlab coder

  • 打开我们之间用函数封装的代码
  • NEXT

  • 选择第3步编写的文件

  • 检查一下

到这里就大功告成了,文件信息如下

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
  • 10
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值