5 changed files with 296 additions and 381 deletions
@ -1 +1,2 @@
@@ -1 +1,2 @@
|
||||
/Program\ Compiled/ |
||||
*~ |
||||
|
@ -1,167 +0,0 @@
@@ -1,167 +0,0 @@
|
||||
function Disp_Color_Rivalry(l_value,s_value,hfpRG,hfpBG) |
||||
|
||||
commandwindow; % open this, and the cursor will appear in the command window |
||||
|
||||
|
||||
% %% Choose program |
||||
% EEW_StdObsANDSubj = 0; |
||||
% EEW_Subj = 1; |
||||
|
||||
%% |
||||
|
||||
% Check that Psychtoolbox is properly installed, and switch color range to normalized 0 - 1 range: |
||||
PsychDefaultSetup(2); |
||||
|
||||
%% Start Experiment |
||||
|
||||
%a = cd; |
||||
theDate = fix(clock); |
||||
% subName = 'DC'%input(sprintf('\nEnter Subject Initials: ')) |
||||
|
||||
duration= 5; % sec |
||||
% %% Color information, load hfp data and color calibration |
||||
% |
||||
% aa = cd('/Users/clemente/Dropbox/Luminotecnia/2017/Chicago Lab files/2 Experiments/Color AfterImage_Exp_Room_150/2nd/1 Programs/A Outputs'); |
||||
% hfpFile = sprintf('%sHFP', subName); |
||||
% load(hfpFile, '-mat') |
||||
% hfpRG = rg_avg; |
||||
% hfpBG = bg_avg; |
||||
|
||||
% hfpRG = .89; |
||||
% hfpBG = .97 ; |
||||
|
||||
%% |
||||
%cd(a); % return to folder where the program is |
||||
Calib_Dire = cd('/Users/mike/Documents/AfterimageOutputs'); |
||||
load colorCalFile1.mat |
||||
fprintf('\nLast calibrationS was %s\n', describe.date); |
||||
pix = pix/1001; |
||||
maxLum = 20; %cd/m^2 |
||||
|
||||
l_s_pair = [l_value s_value]; |
||||
blackLut = [0 0 0]; |
||||
redLut = [.8 0 0]; |
||||
|
||||
|
||||
|
||||
|
||||
%% set up psych toolbox |
||||
%set up 10 bit color |
||||
PsychImaging('PrepareConfiguration'); |
||||
%PsychImaging('AddTask', 'General', 'EnableNative10BitFrameBuffer',1); %the 0 is turn off dithering? |
||||
expScreen = 1; |
||||
%create white LUT |
||||
wLMS(1,1) = .665*maxLum;%l_s_pair(1,1)*maxLum; |
||||
wLMS(1,2) = (1-.665)*maxLum;%(1-l_s_pair(1,1))*maxLum; |
||||
wLMS(1,3) = 1*maxLum;%l_s_pair(1,2)*maxLum; |
||||
wXYZ(1,:) = LMS_to_XYZ(wLMS(1,:)); |
||||
wRGB(1,:) = XYZ_to_RGB(wXYZ(1,:), maxPhosXYZ); |
||||
wRGB(1,1) = pix(dsearchn(redProp(:), wRGB(1,1)))%*hfpRG; |
||||
wRGB(1,2) = pix(dsearchn(grnProp(:), wRGB(1,2))); |
||||
wRGB(1,3) = pix(dsearchn(blueProp(:), wRGB(1,3)))%*hfpBG; |
||||
|
||||
[window, windowRect] = PsychImaging('OpenWindow', expScreen, [0 0 0]); %EEW for standard observer |
||||
|
||||
[xWinSize,~] = Screen('WindowSize',window); |
||||
|
||||
[xcent,ycent] = RectCenter(windowRect); |
||||
center = [xcent ycent]; |
||||
|
||||
%% Stimulus Size Parameters |
||||
circleDeg = 3.6; |
||||
clockPt = 0.1; |
||||
|
||||
% code assumes 1 pixel = 1 arc min |
||||
pixPerDeg = 36; %at a distance of 57 cm |
||||
circlePix = circleDeg*pixPerDeg |
||||
clockPix = clockPt*pixPerDeg; |
||||
|
||||
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
||||
% %%%%%%%%%%%%%%%%%%%%%%%%%%% CIRCLE HALf LOCATIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%% |
||||
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
||||
%tstcircle = [xcent - circlePix/2 ycent - circlePix/2 xcent + circlePix/2 ycent + circlePix/2]; |
||||
rhtXCircleCenter = xWinSize/4; |
||||
lftXCircleCenter = xWinSize-xWinSize/4; |
||||
tstCircleLeft = [lftXCircleCenter - circlePix/2 ycent - circlePix/2 lftXCircleCenter + circlePix/2 ycent + circlePix/2]; |
||||
tstCircleRight = [rhtXCircleCenter - circlePix/2 ycent - circlePix/2 rhtXCircleCenter + circlePix/2 ycent + circlePix/2]; |
||||
|
||||
%create circular grid for clock face and the numbers |
||||
% % % circleDegGrid = 2 ; |
||||
% % % rad = circleDegGrid/2*pixPerDeg; %circlePix/2-pixPerDeg/2; |
||||
rad = circleDeg/2*pixPerDeg; %circlePix/2-pixPerDeg/2; |
||||
radNum = (circleDeg/2) * pixPerDeg; |
||||
degreeNumbers = linspace(0,360,25); |
||||
clockDegs = degreeNumbers(1:end-1); %[1:15:360]; |
||||
clockDegsLft = [90:15:269]; |
||||
clockDegsRht = [270:15:359,0:15:89]; |
||||
for iC = 1:length(clockDegs) |
||||
[xcFace(iC), ycFace(iC)] = pol2cart(clockDegs(iC)*pi/180, rad); |
||||
[xcNumber(iC), ycNumber(iC)] = pol2cart(clockDegs(iC)*pi/180, 1*radNum); |
||||
end |
||||
for iC = 1:length(clockDegsLft) |
||||
[xcRhtFace(iC), ycRhtFace(iC)] = pol2cart(clockDegsLft(iC)*pi/180, rad); |
||||
[xcRhtNumber(iC), ycRhtNumber(iC)] = pol2cart(clockDegsLft(iC)*pi/180, 1*radNum); |
||||
end |
||||
for iC = 1:length(clockDegsRht) |
||||
[xcLftFace(iC), ycLftFace(iC)] = pol2cart(clockDegsRht(iC)*pi/180, rad); |
||||
[xcLftNumber(iC), ycLftNumber(iC)] = pol2cart(clockDegsRht(iC)*pi/180, 1*radNum); |
||||
end |
||||
|
||||
%create matrix of dot locations |
||||
clockPosMat = [reshape(xcFace,1, length(clockDegs)); reshape(ycFace,1, length(clockDegs))]; |
||||
%clockNumMat = [reshape(xcNumber,1, length(clockDegs)); reshape(ycNumber,1, length(clockDegs))]; |
||||
%clockRhtPosMat = [reshape(xcRhtFace,1, length(clockDegsRht)); reshape(ycRhtFace,1, length(clockDegsRht))]; |
||||
clockRhtNumMat = [reshape(xcRhtNumber,1, length(clockDegsRht)); reshape(ycRhtNumber,1, length(clockDegsRht))]; |
||||
%clockLftPosMat = [reshape(xcLftFace,1, length(clockDegsLft)); reshape(ycLftFace,1, length(clockDegsLft))]; |
||||
clockLftNumMat = [reshape(xcLftNumber,1, length(clockDegsLft)); reshape(ycLftNumber,1, length(clockDegsLft))]; |
||||
|
||||
%% |
||||
|
||||
Screen('FillRect', window, [0 0 0], windowRect);% dark screen |
||||
Screen('Flip', window); |
||||
WaitSecs(1) |
||||
|
||||
Screen('FillRect', window, wRGB.*2); |
||||
|
||||
Screen('Flip',window) |
||||
|
||||
% % if EEW_StdObsANDSubj |
||||
% Screen('FillOval', window, wRGB, centeredRect, maxDiameter); % Draw the rect to the screen |
||||
% Screen('Flip', window); |
||||
% WaitSecs(duration) |
||||
% |
||||
% % end |
||||
|
||||
% if EEW_Subj |
||||
wRGB(1,1) = wRGB(1,1)*hfpRG; |
||||
wRGB(1,2) = wRGB(1,2); |
||||
wRGB(1,3) = wRGB(1,3)*hfpBG; |
||||
% |
||||
%Screen('FillOval', window, wRGB, centeredRect, maxDiameter); % Draw the rect to the screen |
||||
% Screen('FillOval', window, wRGB, centeredRect1, maxDiameter); % Draw the rect to the screen |
||||
% Screen('FillOval', window, wRGB, centeredRect2, maxDiameter); % Draw the rect to the screen |
||||
Screen('FillArc', window, wRGB, tstCircleLeft, 0, 180); |
||||
Screen('FillArc', window, wRGB.*1.5 , tstCircleRight, 180, 180); |
||||
Screen('DrawDots', window, clockPosMat,clockPix, blackLut, [lftXCircleCenter,center(2)], 2); |
||||
Screen('DrawDots', window, clockPosMat,clockPix, blackLut, [rhtXCircleCenter,center(2)], 2); |
||||
Screen('DrawDots', window, [0 0],clockPix, 0, [lftXCircleCenter,center(2)], 2); % black dot for fixation |
||||
Screen('DrawDots', window, [0 0],clockPix, 0, [rhtXCircleCenter,center(2)], 2); % black dot for fixation |
||||
|
||||
textOne = [12:24,1:11]; |
||||
scl = 1.35; |
||||
for itxt = 1:12 |
||||
textNum = num2str(textOne(itxt)); |
||||
Screen('DrawText', window, textNum, scl*clockRhtNumMat(1,itxt)+rhtXCircleCenter-7, scl*clockRhtNumMat(2,itxt)+center(1,2)-14, blackLut, wRGB); |
||||
textNum = num2str(textOne(itxt+12)); |
||||
Screen('DrawText', window, textNum, .9*scl*clockLftNumMat(1,itxt)+lftXCircleCenter-7, .9*scl*clockLftNumMat(2,itxt)+center(1,2)-14, blackLut, wRGB); |
||||
end |
||||
Screen('Flip', window); |
||||
% WaitSecs(duration) |
||||
KbWait(); |
||||
% |
||||
% end |
||||
|
||||
% KbStrokeWait; |
||||
Screen('CloseAll') |
||||
|
||||
end |
Binary file not shown.
Loading…
Reference in new issue