Как вы вызываете функцию, которая принимает файл MAT, манипулирует данными в этом файле и создаете новый текстовый файл с тем же именем файла MAT? - PullRequest
0 голосов
/ 03 октября 2018

Имя файла, о котором идет речь, - это файл MAT, содержащий элементы в форме «a - bi», где «i» обозначает мнимое число.Задача состоит в том, чтобы разделить действительную (a) и мнимую (b) части этих элементов и поместить их в два массива.После этого будет создан текстовый файл с тем же именем, что и файл MAT, для хранения данных вновь созданных массивов.

Код:

function separate(filename)

    realArray = real(filename)
    imagArray = imag(filename)

    fileIDname = strcat(filename, '.txt')
    fileID = fopen(fileIDname, 'w')

    % more code here - omitted for readability

end

Я пытаюсь запустить вышеуказанноекод через командное окно.Вот что я пробовал до сих пор:

%attempt 1
separate testFileName 

Это не работает, поскольку выходные данные не содержат правильные данные из файла MAT.Вместо этого realArray и imagArray содержат данные, основанные на символах ascii «testFileName».

например, первый элемент realArray соответствует целочисленному значению 't', второй - 'e', ​​третий - 's' и т. Д. Таким образом, массив содержит только количество элементов в качестве количества символовв имени файла (в данном случае 12) вместо того, что на самом деле находится в файле MAT.

%attempt 2
load testFileName
separate(testFileName)

Поэтому я попытался сначала загрузить переменную MAT testFileName MAT.Однако это приводит к ошибке:

Complex values cannot be converted to chars
Error in strcat (line 87)
    s(1:pos) = str;
Error in separate (line xx)
   fileIDname = strcat(filename, '.txt')

По сути, вы не можете объединить элементы массива в '.txt' (конечно).Но я пытаюсь объединить имя файла MAT в '.txt'.

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

Есть идеи?

1 Ответ

0 голосов
/ 03 октября 2018

Функция для чтения сложных данных, их изменения и сохранения в текстовом файле с тем же именем будет выглядеть примерно так:

function dosomestuff(fname)
   % load
   data=load(fname);

   % get your data, you need to knwo the variable names, lets assume its call "datacomplex"
   data.datacomplex=data.datacomplex+sqrt(-2); % "modify the data"

   % create txt and write it.
   fid=fopen([fname,'.txt'],'w');
   fprintf(fid, '%f%+fj\n', real(data.datacomplex), imag(data.datacomplex));
   fclose(fid);

Существует довольно мало предположений относительно данных и формата, но они могутне делать больше без дополнительной информации.

...