MATLAB форматирование файла данных - PullRequest
1 голос
/ 17 февраля 2012

Мне очень трудно понять соответствующий код / ​​формат для создания файла данных в MATLAB.По какой-то причине эта конкретная задача просто смущает меня.

Итак, у меня есть этот скрипт:

function semjudge

SubNum = ('Subject Number: ','s');

files = dir(fullfile('pictures','*.png'));
nFiles = numel(files);
combos = nchoosek(1:nFiles, 2);
index = combos(randperm(size(combos, 1)), :);
picture1 = files(index(1)).name;
picture2 = files(index(2)).name;
image1 = fullfile('pictures',picture1);
image2 = fullfile('pictures',picture2);
subplot(1,2,1); imshow(image1); title(picture1);
subplot(1,2,2); imshow(image2); title(picture2);

uicontrol('Style', 'text',...
        'Position', [200 45 200 20],...
        'String','How related are these pictures?');
uicontrol('Style', 'text',...
        'Position', [50 45 100 20],...
        'String','Unrelated');
uicontrol('Style', 'text',...
        'Position', [450 45 100 20],...
        'String','Closely related');
uicontrol('Style','pushbutton','String','Next Trial',...
        'Position', [250 350 100 20],...
        'Callback','clf; semjudge()');

h = uicontrol(gcf,...
   'Style','slider',...
   'Min' ,0,'Max',50, ...
   'Position',[100 20 400 20], ...
   'Value', 25,...
   'SliderStep',[0.02 0.1], ...
   'BackgroundColor',[0.8,0.8,0.8]);

set(gcf, 'WindowButtonMotionFcn', @cb);

lastVal = get(h, 'Value'); 

function cb(s,e)
    if get(h, 'Value') ~= lastVal 
    lastVal = get(h, 'Value'); 
    fprintf('Slider value: %f\n', lastVal); 
    end
end

end

Довольно простой маленький скрипт.Он вытягивает две случайные картинки из папки, и пользователю предлагается сравнить их.Все, что мне нужно, это файл данных, помеченный номером субъекта, что-то вроде:

fid = fopen(strcat('data','_',SubNum,'.txt'),'a');

Сам файл данных. Я хочу содержать заголовок каждого изображения и значения, назначенные ему ползунком.Поэтому, когда пользователь нажимает кнопку «Следующая пробная версия», он сохраняет заголовок (picture1) и заголовок (picture2), а также lastVal.

Я понимаю, что это очень простой вопрос, но документация MathWorks по файлам данныхЯ нахожу очень запутанным, и я не понимаю, как это сделать.

1 Ответ

3 голосов
/ 17 февраля 2012

Если я правильно понимаю вашу проблему, это должно быть что-то вроде этого (см. Подробности в документации FPRINTF ):

fid = fopen(strcat('data','_',SubNum,'.txt'),'a'); 
fprintf(fid, '%s\t%s\t%f\n', picture1, picture2, lastVal)
fclose(fid);

На основании вашего кода имя файла будет ...немного странноНапример, 'data_Subject Number: s.txt' (я надеюсь, что s во 2-й строке будет номером переменной), но вы можете изменить его.

Если вы хотите напечатать каждую переменную как одну строку, вы можете заменить\t с \n.

...