代码如下:
进行软件仿真
如果Assuming_obj 这个变量给6以下三次输出的矩阵是正确的.Assuming_obj变量给7,8前两个矩阵的输出是正确的,最后一个矩阵和倒数第二个矩阵的输出是同一个内容一个在子函数中输出,一个是在主函数输出,但是输出结果不一样.Assuming_obj变量给9以上仿真没有输出 我想问一下这是和软件仿真有关,还是我代码问题.
#include <stdio.h>
#include <math.h>
#include <string.h>
typedef double data_type;
#define Assuming_obj 7
//对称矩阵
data_type **diagonal_matrix(int a)
{
int i,j;
data_type **pi;
// int **pi=new int*[a];
* pi=(data_type **)malloc(a*sizeof(data_type*));
/* for(i=0;i<a;i++)
{
pi[i]=(int *)malloc(a*sizeof(int));
} */
for(i=0;i<a;i++)
{
pi[i]=(data_type *)malloc(a*sizeof(data_type));
for(j=0;j<a;j++)
{
if(i==j)
pi[i][j]=1;
}
}
return pi;
}
//反对称矩阵
data_type **back_diagonal_matrix(int a)
{
int i,j;
data_type **pi_1;
// int **pi=new int*[a];
* pi_1=(data_type **)malloc(a*sizeof(data_type*));
/* for(i=0;i<a;i++)
{
pi[i]=(int *)malloc(a*sizeof(int));
} */
for(i=0;i<a;i++)
{
pi_1[i]=(data_type *)malloc(a*sizeof(data_type));
for(j=0;j<a;j++)
{
if(i+j==(a-1))
{
pi_1[i][j]=1;
printf("%f\t",pi_1[i][j]);
}
else
{
pi_1[i][j]=0;
printf("%f\t",pi_1[i][j]);
}
}
printf("\n");
}
printf("\n");
return pi_1;
}
int main() {
int i,j,k=1;
data_type **pi=diagonal_matrix(Assuming_obj_num);
for(i=0;i<Assuming_obj_num;i++)
{
for(j=0;j<Assuming_obj_num;j++)
{
printf("%f\t",pi[i][j]);
}
printf("\n");
}
printf("\n");
data_type **pi_1=back_diagonal_matrix(Assuming_obj_num);
for(i=0;i<Assuming_obj_num;i++)
{
for(j=0;j<Assuming_obj_num;j++)
{
printf("%f\t",pi_1[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}
Shine:
请问用的是哪款器件? 软仿真能仿真算法,像是代码的问题。
xiaopang miao:
回复 Shine:
C674x,我又写了一个小程序,也是类似问题,当M大于10是输出错误,小于10是对的。我还想问一下ti有提供处理矩阵的函数么‘
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>typedef double data_type;
#define M12
data_type test4[M][M];
data_type test5[M][M];//对称矩阵
data_type **diagonal_matrix(int a)
{int i,j;data_type **pi;pi=(data_type **)calloc(a,sizeof(data_type*));if(pi==NULL){exit(1);}for(i=0;i<a;i++){pi[i]=(data_type *)calloc(a,sizeof(data_type));if(pi==NULL){exit(1);}}
for(i=0;i<a;i++){for(j=0;j<a;j++){if(i==j){pi[i][j]=1;}else{pi[i][j]=0;}}}return pi;
}int main() {
int i,j;data_type **pi=diagonal_matrix(M);for(i=0;i<M;i++){for(j=0;j<M;j++){
test4[i][j]=pi[i][j];}free(pi[i]);}free(pi);return 0;
}