matlab写数据到txt文件,C语言读取文件内容到数组@项目简介:基于PSS序列(频域)估计整数倍频偏

一、编程思想:
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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大师兄电子工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值