How to change code from C to matlab script?
조회 수: 1 (최근 30일)
이전 댓글 표시
My code c is like this, how to change into matlab script?
float DNLRX (void)
{
float uf,x,r1,r2,r3,r4,r5,r6,s1,s2,s3,s4,s5,s6,s7;
float k1,k2,k3,k4,k5,k6,k7,z1,z2,z3,z4,z5,z6,z7,l1,l2,l3,l4,l5,l6,l7;
float B=0.0026;
r1=6.4527;r2=-4.6055;r3=-1.84030;r4=-1.8386;r5=-4.5868;r6=6.4215;
s1=1.0439;s2=14.3983;s3=0.0001;s4=-0.1792;s5=-14.3811;s6=-0.8453;s7=0.0018;
k1=SIGN(a-b+d1);
z1=abs(a-b+d1);
l1=Min(z1,0.0708);
d1=k1*l1;
k2=SIGN(a-b+d2);
z2=abs(a-b+d2);
l2=Min(z2,0.0737);
d2=k2*l2;
k3=SIGN(a-b+d3);
z3=abs(a-b+d3);
l3=Min(z3,54.1993);
d3=k3*l3;
k4=SIGN(a-b+d4);
z4=abs(a-b+d4);
l4=Min(z4,0.0353);
d4=k4*l4;
k5=SIGN(a-b+d5);
z5=abs(a-b+d5);
l5=Min(z5,0.0734);
d5=k5*l5;
k6=SIGN(a-b+d6);
z6=abs(a-b+d6);
l6=Min(z6,0.0779);
d6=k6*l6;
k7=SIGN(a-b+d7);
z7=abs(a-b+d7);
l7=Min(z7,1.0964);
d7=k7*l7;
x=s1*d1+s2*d2+s3*d3+s4*d4+s5*d5+s6*d6+s7*d7; //theta*delta
uf=r1*a+r2*b+r3*c+r4*d+r5*e+r6*f+x+B; //maxwell equation
f=e;
e=d;
d=c;
c=b;
b=a;
a=z; //z=new_postion
return uf;
}
댓글 수: 0
채택된 답변
James Tursa
2020년 6월 8일
편집: James Tursa
2020년 6월 8일
This is just straightforward arithmetic, so the conversion is pretty simple. I would forget about using single precision floats though unless you are trying to match a specific precision calculation. Just use doubles.
However, it appears that some of the inputs are top level variables that are not coming into the function via the argument list which is void. So you will have to figure out what those variables are and put them into the input argument list. And it appears that these top level variables are also outputs of the function, so they will need to be in the output argument list as well. E.g.,
E.g.,
% Put this in a file called DNLRX.m
function [uf,a,b,d1,...etc] = DNLRX(a,b,d1,...etc) % you fill this in for all the I/O variables
SIGN = @sign;
Min = @min;
B=0.0026;
r1=6.4527;r2=-4.6055;r3=-1.84030;r4=-1.8386;r5=-4.5868;r6=6.4215;
s1=1.0439;s2=14.3983;s3=0.0001;s4=-0.1792;s5=-14.3811;s6=-0.8453;s7=0.0018;
k1=SIGN(a-b+d1);
z1=abs(a-b+d1);
l1=Min(z1,0.0708);
d1=k1*l1;
k2=SIGN(a-b+d2);
z2=abs(a-b+d2);
l2=Min(z2,0.0737);
d2=k2*l2;
k3=SIGN(a-b+d3);
z3=abs(a-b+d3);
l3=Min(z3,54.1993);
d3=k3*l3;
k4=SIGN(a-b+d4);
z4=abs(a-b+d4);
l4=Min(z4,0.0353);
d4=k4*l4;
k5=SIGN(a-b+d5);
z5=abs(a-b+d5);
l5=Min(z5,0.0734);
d5=k5*l5;
k6=SIGN(a-b+d6);
z6=abs(a-b+d6);
l6=Min(z6,0.0779);
d6=k6*l6;
k7=SIGN(a-b+d7);
z7=abs(a-b+d7);
l7=Min(z7,1.0964);
d7=k7*l7;
x=s1*d1+s2*d2+s3*d3+s4*d4+s5*d5+s6*d6+s7*d7; //theta*delta
uf=r1*a+r2*b+r3*c+r4*d+r5*e+r6*f+x+B; //maxwell equation
f=e;
e=d;
d=c;
c=b;
b=a;
a=z; //z=new_postion
end
댓글 수: 0
추가 답변 (1개)
Abhisek Pradhan
2020년 6월 8일
There is no direct way of converting C code to MATLAB Script as of now. But you can use MEX Files to run C Code in MATLAB Environment. Refer the following link:
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Function Creation에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!