我需要创建一个二维数组的一维数组,以便程序可以分别读取每个二维数组。
我有一个包含 5 列的大型数组,第二列存储“标记”数据。根据标记值,我需要从剩余的 4 列中取出相应的数据,并将它们单独放入一个新数组中。
我正在考虑运行两个 for 循环,一个用于获取目标数据并将其写入一维数组中的一个单元格,另一个用于逐行读取初始数组,寻找标记。
我觉得这是一个相当简单的问题,我只是无法弄清楚如何从本质上剪切和粘贴数组的某些部分并将它们写入新的部分。
提前致谢。
我只是在回答我自己的问题,以向任何潜在的未来用户展示我最终提出的解决方案。
%=======SPECIFY CSV INPUT FILE HERE========
MARKER_DATA=csvread('ESphnB2.csv'); % load data from csv file
%===================================
A=MARKER_DATA(:,2); % create 1D array for markers
A=A'; % make column into row
for i=1:length(A) % for every marker
if A(i) ~= 231 % if it is not 231 then
A(i)=0; % set value to zero
end
end
edgeArray = diff([0; (A(:) ~= 0); 0]); % set non-zero values to 1
ind = [find(edgeArray > 0) find(edgeArray < 0)-1]; % find indices of 1 and save to array with beginning and end
t=1; % initialize counter for trials
for j=1:size(ind,1) % for every marked index
B{t}=MARKER_DATA(ind(j,1):ind(j,2),[3:6]); % create an array with the rows from the data according to indicies
t=t+1; % create a new trial
end
gazeVectors=B'; % reorient and rename array of trials for saccade analysis
%======SPECIFY MAT OUTPUT FILE HERE===
save('Trial_Data_2.mat','gazeVectors'); % save array to mat file
%=====================================