I want to use the if function to delete every row in a matrix D that has a cell with -99.99 , there are a total of 582 rows and 2 colmuns if that helps. Any assistance would be greatly appreciated.

댓글 수: 1

Stephen23
Stephen23 2015년 4월 25일
In MATLAB a cell refers to an element of a cell array, whereas for numeric and characters arrays the individual vlaues are called the elements.

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

 채택된 답변

Stephen23
Stephen23 2015년 4월 25일
편집: Stephen23 2015년 4월 25일

1 개 추천

There is one very important point to consider, and that is that checking for equivalence of floating point values is not recommended:
Instead of checking that the value is equal to -99.99 you should check that the values is inside a range of values, or equivalently use a tolerance values in a comparison:
>> tol = 0.01;
>> val = -99.99;
>> D = [1,2,3;4,5,-99.99;6,7,8;9,-99.99,0] % fake data
D =
1 2 3
4 5 -99.99
6 7 8
9 -99.99 0
>> D(any(abs(D-val)<=tol,2),:) = []
D =
1 2 3
6 7 8
This solution uses vectorized code and logical indexing, which will be faster than solving this in a loop. It also extends nicely as the arrays get larger, unlike a loop.

댓글 수: 1

cormac spillane
cormac spillane 2015년 4월 25일
thank you stephen ! that works much better and is logically more sound
cheers cormac

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Data Types에 대해 자세히 알아보기

태그

질문:

2015년 4월 25일

댓글:

2015년 4월 25일

Community Treasure Hunt

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

Start Hunting!

Translated by