2

我有一个包含 64x64 矩阵值的文本文件,它们是复数。我想从文件中读取它们,但我遇到了困难。使用复杂的 C 库或为复数创建新的数据类型对我来说都可以,我只需要正确读取它们即可。

我的意思是,是否使用:

#include <complex.h>
int complex matrix[64][64];

或为其创建数据类型:

typedef struct {
    int real, imag;
} Complex;

Complex matrix[64][64];

只要它们被正确阅读,对我来说就可以了。

您可以在下面找到 2x3 矩阵,只是为了演示我的文件中的数字:

{{-32767, 12532 + 5341I, -3415 - 51331I}
 {32767I, 32609 + 3211I, 32137 + 6392I}}

所以你可以看到有些部分既有实部又有虚部,有些只是虚部,有些只是实部,所有虚数的末尾都有大写的“i”字母。如果你能帮助我,我会很高兴。

4

2 回答 2

0

数字的组织方式无关紧要,如果它们在内存中对齐,您可以一次读取它们:

Complex matrix[64][64];
fread(matrix,sizeof(Complex),64*64, your_file_pointer);

写法一样:

fwrite(matrix, sizeof(Complex), 64*64, your_file_pointer);
于 2012-11-17T12:57:38.803 回答
0

两种常见的设计模式适用:
1)接受“语言”的递归下降解析器
2)状态机

这两种情况都可以从 read_char() 函数中受益,如果遇到除 '{', '}', 0-9, i, +, - 之外的任何内容并跳过所有空格 (ch<=32) .

状态机可以更加通用:如果在任何时候有“+”或“-”,则可以将下一个值(以“i”或非“i”结尾)添加或减去当前累积值. (然后状态机也能够计算 1+2-1+1i ,而它去......)

于 2012-11-17T12:58:21.177 回答