Assign an incrementing variable to another variable name

2 Ansichten (letzte 30 Tage)
Gulce Lale
Gulce Lale am 4 Nov. 2020
Kommentiert: Peter Perkins am 18 Nov. 2020
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 Kommentare
Gulce Lale
Gulce Lale am 4 Nov. 2020
Thank you very much, you really solved the problem!:)
Peter Perkins
Peter Perkins am 18 Nov. 2020
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

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by