C语言实现信号打包成二进制文件并在Matlab中读取并画图(VS版)
前些天老师布置了一道作业:在main.cpp里面生成了两个信号s1和s2,将这两个信号的数据用二进制形式写到文件signal.dat里面,然后用Matlab从该文件中读取信号的数据,将两信号画在一张图中
main.cpp
include<'vector.h'>
using namespace std;
int main()
{
int N = 100;
double t;
vector<double> s1(N), s2(N); //定义两个大小为100的向量数组
for(int i = 0; i < N; i ++) {
t = i * 0.1;
s1[i] = t * t - 2 * t;
s2[i] = - t * t + 2 * t;
}
system("pause");
}
老师已经在main.cpp中用向量定义了两个数组s1,s2用于储存信号,接下来要做的工作就是把两个数组写入二进制文件中。首先先学习一下两个重要函数:
fread函数和fwrite函数
1.函数功能
用来读写一个数据块。
2.一般调用形式
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
3.说明
(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
(2)size:要读写的字节数;
(3)count:要进行读写多少个size字节的数据项;
(4)fp:文件型指针。
FILE *fp = NULL;
errno_t err;
const char *filename1 = "signal.dat"; //定义二进制存放处
err = fopen_s(&fp,filename1, "wb"); //使用fopen_s()函数以wb形式打开文件
if (fp == NULL)
{
printf("无法打开文件!");
return 0;
}
fwrite(s1, sizeof(s1), 1, fp); //写入信号s1
fwrite(s2, sizeof(s2), 1, fp); //写入信号s2
fclose(fp); //关闭数据流,防止数据丢失