MATLAB数据文件格式化

时间:2012-02-17 15:42:59

标签: matlab file save fopen

我很难理解在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 个答案:

答案 0 :(得分:3)

如果我正确理解您的问题,应该是这样的(详情请查看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实际上是可变数字),但您可以自行更改。

如果您想将每个变量打印为一行,可以将\t替换为\n