While loop for the elements of an array
50 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have an array:
a=[1 1 1 1 1 1 1 10 1 1 1 1 1 1 12 1 1 1 1 3];
I want to make a while loop that does the following
enas=0;
while a(i)==1 %
enas=enas+1;
end
But I don't know how to express it in matlab. Can you help me please?
1 Kommentar
Image Analyst
am 27 Mai 2013
It's recommended not to use i (the imaginary variable) as a variable name.
Akzeptierte Antwort
Image Analyst
am 27 Mai 2013
Here's how you'd do it:
a=[1 1 1 1 1 1 1 10 1 1 1 1 1 1 12 1 1 1 1 3];
enas=0;
k = 1;
while a(k)==1 %
enas=enas+1
k = k + 1
end
But here's how a real MATLAB programmer would do it:
enas = find(a~=1, 1, 'first')-1
3 Kommentare
Image Analyst
am 27 Mai 2013
If you need to count the length of each stretch of 1's in your array, and if you have the Image Processing Toolbox, you'd do this:
measurements = regionprops(a==1, 'Area');
allLengths = [measurements.Area]; % Get lengths of all stretches of 1s.
If you don't have the Image Processing Toolbox, it's more difficult - let me know if you have that unfortunate case.
Weitere Antworten (1)
Jason Nicholson
am 27 Mai 2013
See the lines below. This will work.
a=[1 1 1 1 1 1 1 10 1 1 1 1 1 1 12 1 1 1 1 3];
i = 1;
enas=0;
while a(i)==1 %
enas=enas+1;
i = i +1;
end
4 Kommentare
Matt Kindig
am 27 Mai 2013
Bearbeitet: Matt Kindig
am 27 Mai 2013
This should do it:
b = [0, a, 0]; %ensure that ends are not 1
edges = find(b~=1); %location elements that are not 1
spans = diff(edges)-1; %distance between edges is span of 1's
enas = spans(spans~=0) %should output 7 6 4
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!