Есть две ошибки исправить:
1.) length
дает число символов (= длина) строки, но вы хотите, чтобы получить количество элементов (= размер) в вектор (имена файлов), поэтому вы должны использовать size
.
2.) I1 - структура списка, возвращаемая dir
. Вы можете извлечь его содержимое оператором .
, например. I1.name
, I1.date
, I1.bytes
, I1.isdir
. Введите их в консоль, чтобы увидеть содержимое! Поскольку I1.name
уже содержит полный путь + имя файла + расширение как строковый вектор, вам не нужно его строить с помощью strcat
. В любом случае, если вы хотите «склеить» 2 строки вместе, проще использовать +
, например. S="fisrst_string"+"second_string"
. Таким образом, пересмотренный код:
I1=dir('G:\SCI\FRAME\*.jpg');
n=size(I1.name,"*"); //size of the I1.name vector
disp(n);
for i=1:n
I=imread(I1.name(i)); //I1.name is a string vector
figure();
imshow(I);
end
Это работает.Спасибо! – khushbu