Psychtoolbox:我可以将预先绘制的纹理保存到我的硬盘吗?

时间:2014-09-12 17:34:19

标签: matlab psychtoolbox

在我的实验中,我展示了许多不同的光栅。为了节省实验执行期间的时间,我预先绘制相应的纹理并将它们保存在缓冲区中。但是,这需要大约10-20秒,具体取决于运行使用的刺激次数以及机器的速度。

我想知道是否有办法将预先绘制的纹理存储在硬盘上并让它们读入?

以下是当前代码:

    tic
    stimulus_matrix = [];
      for ifrequencies = 1:length(frequencies)
        for iphase = 1:length(phases)
            for icontrast_manipulation = 1:length(contrast_manipulation)
                for icontrast_values = 1:length(contrast_values(1,:))

grating = makeStimulus(contrast_values(icontrast_manipulation,icontrast_values),grating_size_degrees,phases(iphase),frequencies(ifrequencies,1));

stimulus_matrix(ifrequencies,iphase,icontrast_manipulation,icontrast_values) = Screen('MakeTexture', my_window, grating);

Screen('FillOval', stimulus_matrix(ifrequencies,iphase,icontrast_manipulation,icontrast_values), background, CenterRect(ovalRect,gratingRect));


                % Display a progress bar during buffering
                % code for progress bar removed for clarity

            end
        end
    end
end

3 个答案:

答案 0 :(得分:1)

你可以使用

save('mydata.mat',stimulus_matrix);

当你需要矩阵时,你可以加载它。

load mydata.mat;

然后根据需要使用刺激_矩阵。

答案 1 :(得分:0)

stimulus_matrix不仅仅是生成纹理的索引吗?这些指数只是指针。因此,如果您关闭纹理但保持窗口打开,我不认为加载矩阵可以让您再次绘制纹理。

答案 2 :(得分:0)

不确定这是否适合您的情况,但您可以尝试:

screen_array = Screen('GetImage', my_window);

绘制纹理时。这将为您提供当时屏幕内容的3D数组(包括纹理),然后您可以编辑它以仅包含纹理和/或随后导出。