我的MATLAB脚本是:
从MATLAB文件中提取四个不同的fMRI个开头(这些文件名为'subject 06 data','subject 05 data'等)
将此信息放在一个新文件中,其中包含两个名为“durations”和“names”的变量。
将所有这些保存为新的MATLAB文件。
我面临两个问题:
目前,下面的脚本设法为“Gender_recogntion”目录中的第一个MATLAB文件执行步骤1到3,但是对于文件夹中的其他MATLAB文件,它不会执行1到3。它在'load(sub_name(i).name);'。
行的循环中崩溃这是我得到的错误:
???索引矩阵参考不正确。
==>中的错误Gender_onsets_script_2 at 16
负载名(sub_name(ⅰ)。名称);
另外,我想用新的MATLAB文件的名称命名新的MATLAB文件。目前,新的MATLAB文件名为'onsets.mat'。
clear all
close all
clc
cd 'C:\Program Files\MATLAB\R2007b\Data\Resilience\Real_data\Raw\Matlab_files\Gender_recogntion';
sub_name = dir('C:\Program Files\MATLAB\R2007b\Data\Resilience\Real_data\Raw\Matlab_files\Gender_recogntion\*.mat');
for i = 1:numel(sub_name);
load(sub_name(i).name);
names = {'sad' 'anger' 'neutral' 'rest'};
durations = {[18] [18] [18] [18]};
onsets=cell(1,4);
onsets{1} = data.time_since_scan_start(data.emotion==5)/1000; %Get the 36 onsets for sad.
onsets{2} = data.time_since_scan_start(data.emotion==4)/1000; %Get the 36 onsets for anger.
onsets{3} = data.time_since_scan_start(data.emotion==6)/1000;% Get the 36 onsets for calm.
onsets{4} = datarest.onset/1000; %Get the six onsets for the rest blocks.
onsets{1} = onsets{1}(1:6:36)'; %Get the first onset value of each of the six blocks.
onsets{2} = onsets{2}(1:6:36)';
onsets{3} = onsets{3}(1:6:36)';
onsets{4} = onsets{4}';
%cd Onsets folder, saves onsets, and then cd back to folder "Matlab_files"
cd 'C:\Program Files\MATLAB\R2007b\Data\Resilience\Real_data\Onsets';
save 'onsets.mat' names durations onsets
cd 'C:\Program Files\MATLAB\R2007b\Data\Resilience\Real_data\Raw\Matlab_files\Gender_recogntion';
end
答案 0 :(得分:0)
关于命名输出文件与输入相同的第二个问题,您可以使用保存的函数版本并传入变量 sub_name(i).name 作为文件名参数。
保存(sub_name(i).name,'names','durations','onsets')
这对输入和输出使用完全相同的名称(在脚本的不同目录中)。当我保存输出文件时,我通常会将它们保存在与输入相同的目录中,因此我使用正则表达式修改输入文件名(请参阅 regexprep )或添加前缀或后缀( strcat < / strong>)创建一个相关但不同的输出文件名。
供将来参考...保存的默认文件类型是MATLAB数据格式;如果您的数据类型兼容,您可以传入'-ASCII'作为参数,以保存为文本文件。此示例中的单元格数组不是,但字符串和数字矩阵将是,因此如果文本输出文件很重要,您可以从头开始使用备用数据结构或使用cell2mat转换单元格。 save()版本的一般示例:保存(文件名,' - ASCII','x','y','z')其中x,y,z是ASCII友好变量, filename是一个文本文件。
[补充回复,2011年1月5日加入]
关于错误讯息的第一个问题: ???索引矩阵参考不正确。
保存的.mat文件是否可能包含名为 dir 的变量,它会覆盖标准目录列表功能并导致该错误?我在另一个网站上阅读了该提示,只是想传递它以防万一。