So I have a list containing strings like this
test = {'3.jpg', '4.jpg', '5.jpg', '6.jpg'};
I want to delete the specific entry with the name '4.jpg' completely, not just be left with ' ' - which is what the function erase does erase(test{2}, '4.jpg'). And in my project I do not know where this specific element is located.
for i = 1:length(test)
if strcmp(test{i}, '4.jpg') == 1
""Do something that deletes element i""
end
end
Thanks in advance

댓글 수: 1

A simple alternative to using indexing:
setdiff(test,'4.jpg')

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

 채택된 답변

Jan
Jan 2018년 2월 26일

3 개 추천

test = {'3.jpg', '4.jpg', '5.jpg', '6.jpg'};
test(strcmp(test, '4.jpg')) = []

추가 답변 (1개)

Geoff Hayes
Geoff Hayes 2018년 2월 26일

2 개 추천

Niels - you could try
test(strcmp(test,'4.jpg')) = []
We use strcmpi(test,'4.jpg') to determine which elements of test string match to 4.jpg. The result is a logical array of zeros and ones (where a one indicates a match). We then set all those matches to be empty which "removes" the element from the list. And so test is now
test =
'3.jpg' '5.jpg' '6.jpg'

카테고리

도움말 센터File Exchange에서 Characters and Strings에 대해 자세히 알아보기

댓글:

2018년 2월 26일

Community Treasure Hunt

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

Start Hunting!

Translated by