Как распечатать файл в другом файле в Matlab? - PullRequest
1 голос
/ 21 октября 2011

Например, если у меня есть файлы A.dat и B.dat и

A.dat имеют

1 2 3

4 5 6

7 8 9

и файл B.dat сначала пуст.

Как я могу (используя функции Matlab) открыть файл B.dat printA.dat содержание и распечатать другие записи, такие как

10 11 12

13 14 15

?

Iпробовал

fileA=fopen('A.dat','r')

fileB=fopen('B.dat','w');

fprintf(fileB,fileA);

или

fprintf(fileB,fscanf(fileA));

или

fprintf(fileB,fscanf(fileA,'%s'));

, но ни один не работает.

Ответы [ 2 ]

2 голосов
/ 21 октября 2011

Вы, похоже, не понимаете, для чего используются функции. fprintf и fscanf, вероятно, не то, что вы ищете (но может быть полезно).

Попробуйте использовать fread и fwrite вместо:

dataA = fread(fileA)
fwrite(fileB, dataA)

Проверьте документацию для файловых операций на http://www.mathworks.se/help/techdoc/ref/f16-5702.html#f16-14516

1 голос
/ 21 октября 2011

Вы должны быть в состоянии использовать fgets.fopen дает идентификатор файла, а не информацию в файле, поэтому ваш первый пример не сработает.

Если предположить, что ваш файл является текстовым (не двоичным), тогда что-то вроде следующего должно работать для копирования файла

fileA = fopen('A.dat','r');
fileB = fopen('B.dat', 'w');
while (line = fgets(fileA)) ~= -1
    fprintf(fileB, line);
end
fclose(fileA);
fclose(fileB);

fgets дает вам всю строку (включая символы новой строки) из текстового файла.

Если ваш файл является двоичным, то будет работать что-то вроде следующего

fileA = fopen('A.dat', 'r');
fileB = fopen('B.dat', 'w');
AData = fread(fileA);
fwrite(fileB, AData);

Примечание: К сожалению, у меня нет matlab на этом компьютере, поэтому я не смог протестировать примеры.

Для получения дополнительной информации о различных функциях файла, которые есть в matlab: http://www.mathworks.com/help/techdoc/ref/f16-5702.html#f16-14516

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...