Selectivly remove values from a matrix with a loop
이전 댓글 표시
I wrote a program that takes data from different databases and plots them. However, sometimes one or more of the databases inputting data yields no values from a query.
When this happens, I get an error message,
'index exceeds matrix dimensions'
Right now, my guess on how to solve this is to run a 'for' loop. (I want to remove the null set of data from a data array as well as a 'names' array (for the plot legend))
I have n data sets and a names array with n names.
I want to do:
for i=1:n %Check each database
if dataarray{i}=0
%If the data is null (This might not be the right way to do this...but basically if there IS data...it is stored as a 350x2 double array...and if there is NOT data...its stored as 0 (a double array I believe)
delete ith value from dataarray
%I dont know how to do this
delete ith value from namesarray
%Also dont know how to do this
n=n-1
%For plotting in the future..we have one less dataset..now n-1 datasets
end
end
So thats what I am trying to accomplish. I have been trying to read about error handling from matlab, and have also browsed this forum, but cannot find exactly what I need.
Any help would be great!
채택된 답변
추가 답변 (1개)
Fangjun Jiang
2011년 6월 6일
Follow this example:
a=1:9
a(5)=[]
Please note that using this approach, you should not do it in a loop. Also follow this example:
b=randint(5)
b(b==0)=[]
댓글 수: 5
daniel.x16
2011년 6월 6일
Matt Fig
2011년 6월 6일
In this example, the 5th column is deleted. a is a row vector. To delete the 5th row of a matrix:
a(5,:) = []
daniel.x16
2011년 6월 6일
Fangjun Jiang
2011년 6월 6일
The reason not to do it in the loop is because a(5)=[] as an example above reduces the length of a from 9 to 8. Thus if it is in a for-loop (for i=1:9), it will mess up with the index. If you don't want to remove that element, you can assign a special value like inf or nan. Anyway, maybe you should provide an example with some data so we'll better understand the question and provide answers.
Walter Roberson
2011년 12월 8일
daniel.x16: there is no such thing as an if loop.
카테고리
도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!