Получите только количество строк каждой матрицы каждой ячейки, затем сложите эти номера строк и проверьте, на какой ячейке вы достигнете 8-й строки.
%dummy data
x{1} = rand(3,8);
x{2} = rand(3,2);
x{3} = rand(3,20);
val = 8;
csize = cellfun(@(x) size(x,1),x); %get the number of line for each cell
csum = cumsum(csize); % [3,6,9]
ind = find(csum>=val,1); % on which cell do we reach the # line
x{ind}((val-csum(ind))+csize(ind),:) %access the right line
fprintf('Accessing the line %d of the cell %d',(val-csum(ind))+csize(ind),ind)
Что вернет:
Accessing the line 2 of the cell 3
РЕДАКТИРОВАТЬ:
Данный пример вводит меня в заблуждение, так как я был уверен, что вы пытаетесь получить доступ к строке (первое измерение), а не к столбцу (второе измерение).
Ноесли вы хотите получить доступ к столбцу, вы можете просто настроить приведенный выше код:
val = 8;
csize = cellfun(@(x) size(x,2),x); %get the size of the second dimension now.
csum = cumsum(csize);
ind = find(csum>=val,1);
x{ind}(:,(val-csum(ind))+csize(ind)) %access the right column