0

在我的实验中,我展示了许多不同的光栅。为了节省实验执行期间的时间,我预先绘制了相应的纹理并将它们保存在缓冲区中。但是,这大约需要 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
4

3 回答 3

1

您可以使用

save('mydata.mat',stimulus_matrix);

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

load mydata.mat;

然后根据需要使用stimulus_matrix。

于 2014-10-18T14:42:43.917 回答
0

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

于 2015-03-28T20:19:58.693 回答
0

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

screen_array = Screen('GetImage', my_window);

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

于 2015-08-07T14:18:29.280 回答