MATLAB中如何运行c语言程序

来源:百度知道 编辑:UC知道 时间:2024/06/09 12:49:27
#include "conio.h"
#include<math.h>
#include <stdlib.h>
#include <time.h>
#define n 100
#define a 179
#define k 15
#define x0 1
#define d 0

void suiji(int s[])
{
int i,flag[100]={0};
for(i=0;i<=12;i++)
{
int t=rand()%100;
if(flag[t]==0)
{
flag[t]=1;
s[i]=rand()%100;
}
}
}
/*主函数*/
void main()
{
int m=1,i,j, sj[13];
double e[n],v[n],sum[13];

/*白噪声*/
for(i=1;i<=k;i++)
{
m=m*2;
}
e[0]=a*x0/m;
sum[0]=0;

for(i=1;i<=n;i++)
{
e[i]=(a*(e[i-1]))-(int)(a*(e[i-1])); /* 经课本表2.1验证,正确*/
}

for(i=0;i<=62;i++) /* 63个正态分布的随机数 */
{
suiji(sj); /* 调用随机数子函数

改成MATLAB语言吧。

==============
你的这个C存在一些问题。主要是地址越界问题。
1.
for(i=1;i<=n;i++)
{
e[i]=(a*(e[i-1]))-(int)(a*(e[i-1])); /* 经课本表2.1验证,正确*/
}
e的声明是e[n],明显越界了。

2。
for(i=0;i<=62;i++) /* 63个正态分布的随机数 */
{
suiji(sj); /* 调用随机数子函数 */
for(j=1;j<=12;j++)
{
sum[j]=sum[j-1]+e[sj[j]];
}

v[i]=sum[12]-6;
}
v的声明是v[n],你上面的i已经达到了62也越界了。

我用MATLAB的时候是将matlab语言的程序编译成c++语言的。用的就是MATLAB本身自带的编译器。你不妨试试!