matlab写数据到txt文件,C语言读取文件内容到数组@项目简介:基于PSS序列(频域)估计整数倍频偏
2016-07-26 11:20
1031 查看
一、编程思想:
1.以文本方式打开文件。
2.循环用fscanf格式化输入数据到数组。
3.判断fscanf的返回值,如果显示到达文件结尾,退出输入。
4.关闭文件。
5.使用数据。
二、代码实现:
1.设定文件名为in.txt, 存有一系列整型数据,以空格或换行分隔。
#include <stdio.h>
int main()
{
int v[100];//开一个足够大的数组。
int i = 0, j;
FILE *fp;//文件指针
fp = fopen("in.txt", "r");//以文本方式打开文件。
if(fp == NULL) //打开文件出错。
return -1;
while(fscanf(fp, "%d", &v[i]) != EOF) //读取数据到数组,直到文件结尾(返回EOF)
i++;
fclose(fp);//关闭文件
for(j = 0; j < i; j ++)//循环输出数组元素。
{
printf("%d ", v[j]);
}
return 0;
}
当文件内容为:
1 35 6 8 9 9
10 123 34
76 54 98
程序输出:
1 35 6 8 9 9 10 123 34 76 54 98
2.F:\pss_detect\fre_detect目录下存放由matlab生成的 接收数据中PSS序列的实部文件DataReal.txt和虚部文件DataImag.txt,现在通过C语言读取这两个文件,然后和本地PSS序列做运算,求出频偏。
优势:这样处理比较方便,在matlab中改变一次频偏,运行后即可更新实部和虚部文件中的数据,然后在codeblocks中运行查看是否是matlab中设置的频偏值。附录为matlab中的将数据存入文件代码。
int main()
{
int i=0,j;
int FreOffset;
FILE *fp;//文件指针
dataType realInformation[fftSIZE];//接收数据中PSS序列的实部
dataType imagInformation[fftSIZE];//接收数据中PSS序列的虚部
complex testData[fftSIZE];
/******读取F:\pss_detect\fre_detect\目录下用Matlab生成的实部******/
fp = fopen("F:\\pss_detect\\fre_detect\\DataReal.txt", "r");//以文本方式打开文件。
if(fp == NULL) //打开文件出错。
return -1;
while(fscanf(fp, "%lf", &realInformation[i]) != EOF) //读取数据到数组,直到文件结尾(返回EOF)
i++;
fclose(fp);//关闭文件
for(j = 0; j < i; j ++)//循环输出数组元素。
{
printf("%lf ", realInformation[j]);
}
i=0;
/******读取F:\pss_detect\fre_detect\目录下用Matlab生成的虚部******/
fp = fopen("F:\\pss_detect\\fre_detect\\DataImag.txt", "r");//以文本方式打开文件。
if(fp == NULL) //打开文件出错。
return -1;
while(fscanf(fp, "%lf", &imagInformation[i]) != EOF) //读取数据到数组,直到文件结尾(返回EOF)
i++;
fclose(fp);//关闭文件
for(j = 0; j < i; j ++)//循环输出数组元素。
{
printf("%lf ", imagInformation[j]);
}
for (i = 0; i < fftSIZE; i++){
testData[i] = dcomplex(realInformation[i], imagInformation[i]);
}
FreOffset = FreOffsetDetect(testData);
printf("FreOffset=%d\n",FreOffset);
return 0;
}
附录:
fd = fopen('DataReal.txt','w');
for i=1:1:2048
fprintf(fd,'%g ',real(DataAWGNFrequencyOffset(i)));
end
fclose(fd);
fd = fopen('DataImag.txt','w');
for i=1:1:2048
fprintf(fd,'%g ',imag(DataAWGNFrequencyOffset(i)));
end
fclose(fd);
1.以文本方式打开文件。
2.循环用fscanf格式化输入数据到数组。
3.判断fscanf的返回值,如果显示到达文件结尾,退出输入。
4.关闭文件。
5.使用数据。
二、代码实现:
1.设定文件名为in.txt, 存有一系列整型数据,以空格或换行分隔。
#include <stdio.h>
int main()
{
int v[100];//开一个足够大的数组。
int i = 0, j;
FILE *fp;//文件指针
fp = fopen("in.txt", "r");//以文本方式打开文件。
if(fp == NULL) //打开文件出错。
return -1;
while(fscanf(fp, "%d", &v[i]) != EOF) //读取数据到数组,直到文件结尾(返回EOF)
i++;
fclose(fp);//关闭文件
for(j = 0; j < i; j ++)//循环输出数组元素。
{
printf("%d ", v[j]);
}
return 0;
}
当文件内容为:
1 35 6 8 9 9
10 123 34
76 54 98
程序输出:
1 35 6 8 9 9 10 123 34 76 54 98
2.F:\pss_detect\fre_detect目录下存放由matlab生成的 接收数据中PSS序列的实部文件DataReal.txt和虚部文件DataImag.txt,现在通过C语言读取这两个文件,然后和本地PSS序列做运算,求出频偏。
优势:这样处理比较方便,在matlab中改变一次频偏,运行后即可更新实部和虚部文件中的数据,然后在codeblocks中运行查看是否是matlab中设置的频偏值。附录为matlab中的将数据存入文件代码。
int main()
{
int i=0,j;
int FreOffset;
FILE *fp;//文件指针
dataType realInformation[fftSIZE];//接收数据中PSS序列的实部
dataType imagInformation[fftSIZE];//接收数据中PSS序列的虚部
complex testData[fftSIZE];
/******读取F:\pss_detect\fre_detect\目录下用Matlab生成的实部******/
fp = fopen("F:\\pss_detect\\fre_detect\\DataReal.txt", "r");//以文本方式打开文件。
if(fp == NULL) //打开文件出错。
return -1;
while(fscanf(fp, "%lf", &realInformation[i]) != EOF) //读取数据到数组,直到文件结尾(返回EOF)
i++;
fclose(fp);//关闭文件
for(j = 0; j < i; j ++)//循环输出数组元素。
{
printf("%lf ", realInformation[j]);
}
i=0;
/******读取F:\pss_detect\fre_detect\目录下用Matlab生成的虚部******/
fp = fopen("F:\\pss_detect\\fre_detect\\DataImag.txt", "r");//以文本方式打开文件。
if(fp == NULL) //打开文件出错。
return -1;
while(fscanf(fp, "%lf", &imagInformation[i]) != EOF) //读取数据到数组,直到文件结尾(返回EOF)
i++;
fclose(fp);//关闭文件
for(j = 0; j < i; j ++)//循环输出数组元素。
{
printf("%lf ", imagInformation[j]);
}
for (i = 0; i < fftSIZE; i++){
testData[i] = dcomplex(realInformation[i], imagInformation[i]);
}
FreOffset = FreOffsetDetect(testData);
printf("FreOffset=%d\n",FreOffset);
return 0;
}
附录:
fd = fopen('DataReal.txt','w');
for i=1:1:2048
fprintf(fd,'%g ',real(DataAWGNFrequencyOffset(i)));
end
fclose(fd);
fd = fopen('DataImag.txt','w');
for i=1:1:2048
fprintf(fd,'%g ',imag(DataAWGNFrequencyOffset(i)));
end
fclose(fd);
相关文章推荐
- Matlab函数大全
- 大数据基础(六) Matlab R2015b MDCE分布式计算环境搭建
- Matlab查找当前目录及子目录下所有文件
- C#与matlab的混合编程
- Ubuntu下matlab快捷键设置
- MATLAB读取UCI数据集,excel 为中介工具
- Matlab 读取excel文件提示服务器出现意外情况或无法读取问题解决
- MATLAB cell 数组介绍
- 用Matlab实现字符串分割(split)
- matlab字符串处理
- Matlab与C++混合编程(依赖OpenCV)
- Matlab、C++、OpenCV混合编程
- Matlab实现将excel文件数据写到txt文件中
- Matlab批量预处理图片
- Java调用Matlab
- 增加回溯的最短路径算法的matlab实现
- fprintf函数小记
- 买西瓜的高级玩法,用好你的智能手机
- 放学快走,你的电脑在实验室自己喊啪嗒!
- Torch7学习(二) —— Torch与Matlab的语法对比