getting absurd result in For loop

조회 수: 11 (최근 30일)
NAVNEET NAYAN
NAVNEET NAYAN 2017년 3월 31일
댓글: NAVNEET NAYAN 2017년 3월 31일
multi = dir('D:\testing\abrupt\*.jpg');
for i = 1:2:length(multi)
filename = strcat('D:\testing\abrupt\',num2str(i),'.jpg');
I = imread(filename);
I1 = rgb2gray(I);
mat1(:,:,i)= I1;
end
In the folder "multi" images are saved as 1.jpg 3.jpg 5.jpg...etc.the total number of images in "multi"was 133 and it is like 1,3,5,7....265, means only odd number of images are saved. when this code was run, the I am getting m-by-n-by-133 mat1(:,:,i) values but problem encountered is that mat1(:,:,2), mat1(:,:,4), mat1(:,:,6) or mat1(:,:,even no.) are having all matrix elements as zero whereas mat1(:,:,odd number) are giving correct result? How can I solve this problem??

채택된 답변

Jan
Jan 2017년 3월 31일
편집: Jan 2017년 3월 31일
The results is not absurd, but exactly as expected. Try this:
a = [];
a(1) = 1;
a(3) = 3;
disp(a)
The element a(2) is filled by a 0 implicitly. There are no "gaps" in numerical arrays. Solution:
FileList = dir('D:\testing\abrupt\*.jpg');
for iFile = 1:length(FileList)
filename = fullfile('D:\testing\abrupt\', FileList(iFile));
I = imread(filename);
I1 = rgb2gray(I);
mat1(:, :, iFile)= I1;
end
If you want to exclude the files with the even indices:
FileList = dir('D:\testing\abrupt\*.jpg');
index = 0;
for iFile = 1:2:length(FileList)
filename = fullfile('D:\testing\abrupt\', sprintf('%d.jpg', iFile));
I = imread(filename);
I1 = rgb2gray(I);
index = index + 1;
mat1(:,:, index) = I1;
end
  댓글 수: 1
NAVNEET NAYAN
NAVNEET NAYAN 2017년 3월 31일
Thanks Simon, It's working now...

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

KSSV
KSSV 2017년 3월 31일
편집: KSSV 2017년 3월 31일
In the for loop you are taking only even numbers....change it to 1:1:length(multi)
multi = dir('D:\testing\abrupt\*.jpg');
for i = 1:1:length(multi)
filename = strcat('D:\testing\abrupt\',num2str(i),'.jpg');
I = imread(filename);
I1 = rgb2gray(I);
mat1(:,:,i)= I1;
end
  댓글 수: 1
NAVNEET NAYAN
NAVNEET NAYAN 2017년 3월 31일
when i am doing for i = 1:1:length(multi) i am getting an error : File "D:\testing\abrupt\2.jpg" does not exist. Error in program_number_2(line 7) I2 = imread(filename);

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Whos에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by