您的位置:首页 > 编程语言 > MATLAB

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: