Clear Filters
Clear Filters

I am not understanding the error "Undefined function or variable all_images" I currently have the following code;

1 view (last 30 days)
function stimuli=letters_load(N, randord)
dirname= 'C:\Users\User\Documents\MATLAB\stimuli';
if~exist('N','var')
N=21;
end
if N<1 | N>21
error('Number of images selected is out of range')
end
if~exist('randord','var')
randord=false;
end
d=dir([dirname '*.jpg']);
for i=1:length(d)
file=[ dirname d(i).name ];
all_images{i}=imread(file);
end
if randord
idx=randperm(21);
img = all_images(idx(1:N));
else
img = all_images;
end

Answers (1)

Walter Roberson
Walter Roberson on 22 Jan 2019
Edited: Walter Roberson on 22 Jan 2019
You only assign into all_images if length(d) is at least 1.
In other words, the result of the dir() was empty.
Note that the result of
[dirname '*.jpg']
is going to be
'C:\Users\User\Documents\MATLAB\stimuli*.jpg'
You should switch to using fullfile():
fullfile(dirname, '*.jpg')
also you should pre-allocate:
all_images = cell(length(d), 1);

Categories

Find more on Data Type Conversion in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!