% 映射到 fsaverage 过程
fsaverage_shape1 = mappers_subject1.voxel_to_fsaverage_shape;
num_timepoints = size(fMRI_data_subject1_processed, 1);
fsaverage_data_subject1 = zeros(num_timepoints, prod(fsaverage_shape1)); % 初始化标准空间数据
for t = 1:num_timepoints
cur_fMRI_frame = fMRI_data_subject1_processed(t, :);
% 提取 mapper 的索引和体素
indices = mappers_subject1.voxel_to_fsaverage_indices;
values = cur_fMRI_frame(mappers_subject1.voxel_to_fsaverage_data);
% 检查长度一致性
if length(indices) ~= length(values)
error('Indices and values length mismatch at time point %d', t);
end
% 使用 sparse 函数填充到 fsaverage 数据
fsaverage_data_subject1(t, :) = sparse(indices, 1, values, prod(fsaverage_shape1), 1);
end
% 对被试二的数据执行相同操作
fsaverage_shape2 = mappers_subject2.voxel_to_fsaverage_shape;
fsaverage_data_subject2 = zeros(num_timepoints, prod(fsaverage_shape2));
for t = 1:num_timepoints
cur_fMRI_frame = fMRI_data_subject2_processed(t, :);
indices = mappers_subject2.voxel_to_fsaverage_indices;
values = cur_fMRI_frame(mappers_subject2.voxel_to_fsaverage_data);
if length(indices) ~= length(values)
error('Indices and values length mismatch at time point %d', t);
end
fsaverage_data_subject2(t, :) = sparse(indices, 1, values, prod(fsaverage_shape2), 1);
end
disp('Mapping complete for both subjects.');
错误使用 zeros
请求的 311x26585985972 (61603.2GB)数组超过预设的最大数组大小。创建大于此限制的数组可能需要较长时间,并且会导致 MATLAB 无响应。