请问怎么把c语言转换成Matlab 10
#include"stdio.h"#include"stdlib.h"#include"math.h"#definen50000main(){inti=0,j,k2,k3...
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#define n 50000
main()
{int i=0,j,k2,k3,k4,k5,k6;
float q[4],k[5][5],q1,q2,q11,h1=0.1,h=0.01,k1,E;
FILE *fp;
clrscr();
fp=fopen("E:\\lixian\\wenjian\\017","wa");
E=(float)1/12;q11=0.0;
k5=0;k6=1;
while(k5<2)
{for(k2=-2;k2<3;k2++)
{q[2]=h1*k2;
for(k3=-2;k3<3;k3++)
{q[3]=h1*k3;
for(k4=-2;k4<3;k4++)
{q[1]=k4*h1;
if((2*(E+(float)1/3*q[1]*q[1]*q[1]-q[1]*q[3]*q[3])
-q[2]*q[2]-q[1]*q[1]-q[3]*q[3])>=0)
q[4]=k6*sqrt(2*(E+(float)1/3*q[1]*q[1]*q[1]-q[1]*q[3]*q[3])
-q[2]*q[2]-q[1]*q[1]-q[3]*q[3]);
else continue;
for(i=1;i<5;i++)k[i][0]=0;
k1=0;
while(k1<n)
{for(i=1;i<5;i++)
{if(i==4)h=2*h;
for(j=1;j<5;j++)
{if(j==1)k[j][i]=q[2]+h/2*k[j+1][i-1];
if(j==2)k[j][i]=-(q[1]+h/2*k[j-1][i-1]+pow(q[3]+h/2*k[j+1][i-1],2)-pow(q[1]+h/2*k[j-1][i-1],2));
if(j==3)k[j][i]=q[4]+h/2*k[j+1][i-1];
if(j==4)k[j][i]=-(q[3]+h/2*k[j-1][i-1]+2*(q[1]+h/2*k[j-3][i-1])*(q[3]+h/2*k[j-1][i-1]));}}
h=h/2;
for(i=1;i<5;i++)
{if(i==3)q1=q[i];
q[i]=q[i]+h/6*(k[i][1]+2*k[i][2]+2*k[i][3]+k[i][4]);}
if((q1-q11)*(q[3]-q11)<0&&q[4]>0)
fprintf(fp,"%f,%f\n",q[1],q[2]);
k1++;}}}}k6=-1;k5++;} 展开
#include "stdlib.h"
#include "math.h"
#define n 50000
main()
{int i=0,j,k2,k3,k4,k5,k6;
float q[4],k[5][5],q1,q2,q11,h1=0.1,h=0.01,k1,E;
FILE *fp;
clrscr();
fp=fopen("E:\\lixian\\wenjian\\017","wa");
E=(float)1/12;q11=0.0;
k5=0;k6=1;
while(k5<2)
{for(k2=-2;k2<3;k2++)
{q[2]=h1*k2;
for(k3=-2;k3<3;k3++)
{q[3]=h1*k3;
for(k4=-2;k4<3;k4++)
{q[1]=k4*h1;
if((2*(E+(float)1/3*q[1]*q[1]*q[1]-q[1]*q[3]*q[3])
-q[2]*q[2]-q[1]*q[1]-q[3]*q[3])>=0)
q[4]=k6*sqrt(2*(E+(float)1/3*q[1]*q[1]*q[1]-q[1]*q[3]*q[3])
-q[2]*q[2]-q[1]*q[1]-q[3]*q[3]);
else continue;
for(i=1;i<5;i++)k[i][0]=0;
k1=0;
while(k1<n)
{for(i=1;i<5;i++)
{if(i==4)h=2*h;
for(j=1;j<5;j++)
{if(j==1)k[j][i]=q[2]+h/2*k[j+1][i-1];
if(j==2)k[j][i]=-(q[1]+h/2*k[j-1][i-1]+pow(q[3]+h/2*k[j+1][i-1],2)-pow(q[1]+h/2*k[j-1][i-1],2));
if(j==3)k[j][i]=q[4]+h/2*k[j+1][i-1];
if(j==4)k[j][i]=-(q[3]+h/2*k[j-1][i-1]+2*(q[1]+h/2*k[j-3][i-1])*(q[3]+h/2*k[j-1][i-1]));}}
h=h/2;
for(i=1;i<5;i++)
{if(i==3)q1=q[i];
q[i]=q[i]+h/6*(k[i][1]+2*k[i][2]+2*k[i][3]+k[i][4]);}
if((q1-q11)*(q[3]-q11)<0&&q[4]>0)
fprintf(fp,"%f,%f\n",q[1],q[2]);
k1++;}}}}k6=-1;k5++;} 展开
1个回答
2018-03-03 · 知道合伙人互联网行家
关注
展开全部
matlab 主要使用矩阵,变量是矩阵,运算是矩阵。即使是C语言中的一个简单变量,matlab也要视它为矩阵。
C语言程序放入matlab使用:
(1)必须改写main(){},把main(){},变成 matlab 入口函数 mexFunction(){},
(2)其它功能性函数/子程序不需变化。
(3)加头文件 #include "mex.h"
你需要学习一下mexFunction(){} 如何书写,参数意义等。这里帆乱森就不费笔墨了。
入口函数样子:
void mexFunction(int nlhs,mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
//一般变量声明陪毕
//检查输入输出参数
/态亩/为输出参数创建矩阵,输出指针指向它
//输入指针输出指针赋值
//调用功能性函数/子程序
}
C语言程序放入matlab使用:
(1)必须改写main(){},把main(){},变成 matlab 入口函数 mexFunction(){},
(2)其它功能性函数/子程序不需变化。
(3)加头文件 #include "mex.h"
你需要学习一下mexFunction(){} 如何书写,参数意义等。这里帆乱森就不费笔墨了。
入口函数样子:
void mexFunction(int nlhs,mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
//一般变量声明陪毕
//检查输入输出参数
/态亩/为输出参数创建矩阵,输出指针指向它
//输入指针输出指针赋值
//调用功能性函数/子程序
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询