Assign an incrementing variable to another variable name

2 次查看(过去 30 天)
This code can compile when the name_1 and other variables are given manually like I commented below: %name_1 = 'SID12_MVI0248_Trim.mp4'; etc.
However, what I am trying to do is this: I want the code to get this variables from excel sheet and assign the cell data to the variables. For example, it reads from the excel sheet 'face_info' and assume I have 10 videos in the excel sheet. I want every video's name should be updated as: name_1 = first name in the excel sheet and, name_2 = second name etc. and for each name(or video) I want it to compile the function B below which edits the videos in other scripts. So, I want to deal with each of the videos, but I always get the error Error using eval "Unrecognized function or variable 'name_1'." and "invalid use of 'name_' on the left side of an assignment".
I would really appreciate if someone could help me, thanks in advance!
video_name=[]; %name of the video
face_length =[]; %face length
nose_x = [];
nose_y = [];
non_blink_time = [];
[num1,txt1,data1] = xlsread('face_info.xlsx');
for j=1:length(txt1)
video_name = data1(:,1);
nose_x = data1(:,3);%x coordinate of the nose
nose_y = data1(:,4);%y coordinate of the nose
face_length = data1(:,5);%y length of the face
non_blink_time = data1(:,6); %non-blink start time
end
%disp(video_name{2});
videosPathToBeEdited = '/Users/user/Desktop/VideoCodes/';
editedVideosFolderPath = '/Users/user/Desktop/VideoCodes/';
videos = dir(videosPathToBeEdited);
cd(fullfile(editedVideosFolderPath));
faceCell = cell(video_number);
for i = 1:video_number
vidName = video_name{i+1}
disp(vidName);
vidPath = strcat(videosPathToBeEdited, vidName);
disp(vidPath);
V= VideoReader(vidPath);
RGB= readFrame(V);
imshow(RGB);
['name_' num2str(i)] = video_name{i+1};
non_blink_time = ['starting_second_' num2str(i)];
nose_x = ['nose_x_coord_' num2str(i)];
nose_y = ['nose_y_coord_' num2str(i)];
face_length = ['face_length_' num2str(i)];
disp(video_name{i+1});
%name_1 = 'SID12_MVI0248_Trim.mp4'; starting_second_1 = 1; nose_x_coord_1 = 954; nose_y_coord_1 = 520; face_length_1= 397; gender_1 = 'male';
B= conditionprep_behav(eval(['name_' num2str(i)]),sampling_rate_in_use,eval(['starting_second_' num2str(i)]),video_duration,eval(['nose_x_coord_' num2str(i)]),eval(['nose_y_coord_' num2str(i)]),eval(['face_length_' num2str(i)]),video_number,lum_mean,lum_std,resX,resY,elliptic_mask_threshold,video_duration_inname);
faceCell{i}.info = B;
faceCell{i}.sex = eval(['gender_' num2str(i)]);
end
save (['faceCell' video_duration_inname '.mat'],'faceCell');
  3 个评论
Peter Perkins
Peter Perkins 2020-11-18
Gulce, you will likely also be better off using readtable instead of xlsread.
Also, this loop seems suspect, because nothing in the body appears to change over the iterations:
for j=1:length(txt1)
video_name = data1(:,1);
nose_x = data1(:,3);%x coordinate of the nose
nose_y = data1(:,4);%y coordinate of the nose
face_length = data1(:,5);%y length of the face
non_blink_time = data1(:,6); %non-blink start time
end

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by