免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8287 | 回复: 11
打印 上一主题 下一主题

[C] 谁会Matlab,帮我把这个程序转换成C语言,3ks [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-26 14:09 |只看该作者 |倒序浏览
clear all;
close all;
ts=0.001;
J=1/133;
q=25/133;
sys=tf(1,[J,q,0]);
dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');
r_1=0;r_2=0;
u_1=0;u_2=0;
y_1=0;y_2=0;
error_1=0;
ei=0;
for k=1:1:1000
time(k)=k*ts;
s=2;
if s==1   %Step Signal
    rin(k)=1.0;
elseif s==2  %Sine Signal
    rin(k)=1.0*sin(1*2*pi*k*ts);
end
yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
error(k)=rin(k)-yout(k);
derror(k)=(error(k)-error_1)/ts;
ap=22;bp=8.0;cp=0.8;
kp(k)=ap+bp*(1-sech(cp*error(k)));
ad=0.5;bd=2.5;cd=6.5;dd=0.30;
kd(k)=ad+bd/(1+cd*exp(dd*error(k)));
ai=1;ci=1;
ki(k)=ai*sech(ci*error(k));
ei=ei+error(k)*ts;
u(k)=kp(k)*error(k)+kd(k)*derror(k)+ki(k)*ei;
%Update Parameters
r_2=r_1;r_1=rin(k);
u_2=u_1;u_1=u(k);
y_2=y_1;y_1=yout(k);
error_1=error(k);
end
figure(1);
plot(time,rin,'b',time,yout,'r');
xlabel('time(s)');ylabel('error');
figure(2);
plot(time,derror,'r');
xlabel('time(s)');ylabel('derror');
M=1;
if M==1
    figure(3);
    plot(error,kp,'r');xlabel('error');ylabel('kp');
    figure(4);
    plot(error,kp,'r');xlabel('error');ylabel('kd');
    ad+bd/(1+cd)
    figure(5);
    plot(error,ki,'r');xlabel('error');ylabel('ki');
elseif M==2
    figure(4);
    plot(time,kp,'r');xlabel('time(s)');ylabel('kp');
    figure(5);
     plot(time,kd,'r');xlabel('time(s)');ylabel('kd');
     figure(6);
     plot(time,ki,'r');xlabel('time(s)');ylabel('ki');
end

论坛徽章:
0
2 [报告]
发表于 2006-05-26 14:33 |只看该作者
没有人知道么?

论坛徽章:
0
3 [报告]
发表于 2006-05-27 14:28 |只看该作者
有人知道,也不会帮你做苦力

论坛徽章:
0
4 [报告]
发表于 2006-05-27 21:15 |只看该作者
你这个程序 有些matlab自己的画图函数, 没法全部转换

论坛徽章:
0
5 [报告]
发表于 2006-05-27 21:16 |只看该作者
你这个程序 有些matlab自己的画图函数, 没法全部转换

论坛徽章:
0
6 [报告]
发表于 2006-05-28 14:15 |只看该作者
可是俺不懂matlab

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
7 [报告]
发表于 2006-05-28 14:59 |只看该作者
原帖由 yikaikai 于 2006-5-27 21:16 发表
你这个程序 有些matlab自己的画图函数, 没法全部转换

matlab里面应该有有编译工具

论坛徽章:
0
8 [报告]
发表于 2008-03-14 20:01 |只看该作者
遗传算法做PID优化的?

论坛徽章:
0
9 [报告]
发表于 2008-03-14 20:46 |只看该作者
我想除了你给钱, 几乎没有人愿意免费为你做, 除非他是技术狂人.
我去年暑假给别人将一个matlab程序转换成C代码过, 由于涉及到FFT的变换, 几乎所有的运算全是三维数组的转换. 而且matlab的一行代码, 用C要用很多行, 还是循环来完成.
不过有转换工具, 你可以找找.

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
10 [报告]
发表于 2008-03-15 16:32 |只看该作者

回复 #9 scutan 的帖子

楼上的也做过Matlab转C啊,呵呵,是啊。一旦涉及到复杂的数学运算,Matlab一行代码,C里面要上百行啊。最常见的就是FFT,用C实现一遍FFT,老锻炼人了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP