用matlab提取了fmri数据之后,想要把在个体空间的fMRI数据转到标准空间fsaverage上,但是总出现这样的错误提示,请问是什么原因?

% 映射到 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 无响应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值