matlab程序移植到C(输出比较)

工作中有时需要matlab移植,难点是需要验证矩阵输出与matlab中的是否相同。

相同则基本证明代码编写没有问题。

然而打印在屏幕上的办法不是特别好,小矩阵没有问题。大矩阵你看的眼睛都要瞎!

所以我一般是这样做的,以下是我的方法,也不是什么智能方法。更希望朋友们能提供一些更好的方法,感激不尽!

思路:通过程序代码,分别将C程序和matlab程序的同一个矩阵输出保存在两个文本文件里(相同格式)。然后用工具——beyond compare来比较。这样很容易查出问题。


(1)C程序中的输出

#include "iostream.h"
#include "fstream.h"
#include <iomanip.h> // 可能需要包含的头文件
// 输出矩阵到txt文件
typedef struct _MATRIX_ // 我当时写代码时自定义的一个矩阵结构体,有行,列,mat_p是初始化是new一块row*column的内存表示各个数
{
double *mat_p;
int row;
int column;
}MATRIX;
void printTofile(MATRIX m)
{
FILE *outfile;
outfile=fopen("cppOutput.txt","w");
//outfile.open("vad_output.txt");
int i,j;
for(i=0;i<m.row;i++)
{
for(j=0;j<m.column;j++)
{
//outfile<<setprecision(10)<<m.mat_p[i*m.column+j]<<endl;
fprintf(outfile,"%1.14f\n",m.mat_p[i*m.column+j]);// 是小数的时候用这个
//fprintf(outfile,"%d\n",(int)m.mat_p[i*m.column+j]);
}
//fprintf(outfile,"\n");
}
fclose(outfile);
return;
}


(2)matlab中的输出,这个简单一点

file=fopen('F:\vad_test\m.txt','w');
fprintf(file,'%15.14f\n',m);
fclose(file); % 我用的这种,没问题

save m.txt m -ascii -append;% 这种应该也可以,大家可以试试


(3)比较

这个就简单了,下载一个beyondcompare软件,直接比较上面两个文件。

然后就是看比较结果了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值