psyctoolbo​​xの'Screen​'​関数に関して、メ​モリ不足の解消法。

1 view (last 30 days)
takeru misawa
takeru misawa on 29 Oct 2021
Edited: takeru misawa on 29 Oct 2021
psychtoolboxの'Screen'関数に関して、screen関数の更新の仕組みを知りたいです。何度もscreen(maketexture)をするとメモリの容量が足りずにエラーとなってしまいます...
[screenInf.winPtr, screenInf.winRect]=PsychImaging('OpenWindow', 2);
imgdata = imread('画像path');
imagetex = cell(30,1);
Test = cell(30,1);
for i = 1:3
for l = 1: 30
contmake=imadjust(imgdata,[0 1], [0.5-l/60 0.5+l/60]);
imagetex{l} = Screen('MakeTexture', screenInf.winPtr, contmake);
Test{l} = l;
end
end
save('test','imagetex','Test')
disp('end')
たとえばこのようなスクリプトを動かした際に、save関数で保存されたimagetex変数を確認すると30*1のcell型になっておりそれぞれのセルには71~100の数値がひとつづつ入っています。これはつまり、screen関数によって生み出された配列(index)?のような物が100個あるといことなのでしょうか?
今自分が作成しているのは動いているモザイクで,そのアニメーションをスクリーン関数で作成する際、パラパラ漫画の要領で更新していこうと思います。10枚異なるのモザイクの画像を1枚ずつランダムに同じディスプレイの場所(座標)に表示させると動いているモザイクが出来上がると思います。
これをfor文で行おうと思います。
その際に、何度もscreen(maketexture)をするとメモリの容量が足りずにエラーとなってしまいます。これはつまり、maketextureをするたびに前のモザイクの配列情報が新しいものに置き換わるわけではなく、screen(maketexture)のインデックス?に一つ一つ保存され、それが膨大になったときエラーが出ているのかなと感じています。
これを解消する仕組みを知りたいです。
(https://jp.mathworks.com/matlabcentral/answers/1463814-psyctoolbox-screen) ←こちらの質問の続きになります(アカウントは違いますが質問者は同じです)

Answers (0)

Products


Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!