Why do i keep getting x=1 when it should be a matrix??
1 view (last 30 days)
Show older comments
For some reason when i run this script x always equals one when it's suppose to be a matrix.
The program is for star dectection from the image and x suppose to be the threshold with steps.
stars=imread('stars.jpg');
GREY = rgb2gray(stars);
figure,imshow(GREY);
big = max( max (GREY)); %255
threshold = .4;
bwimage = GREY >= threshold*big;
figure(2),imshow(bwimage);
step=0.01;
for x = [0.0:step:1.0]
BW = GREY > big.*x;
count = sum(BW>=x);
end
Thanks ill greatly appreciate the help
0 Comments
Accepted Answer
Walter Roberson
on 5 May 2013
"x" is used as a loop control variable. During the loop it will have only one value at a time; after the loop it will be the last value that it was assigned in the loop.
You have a problem that each iteration of the loop, you are overwriting "BW" and "count".
xvals = 0 : step: 1;
numx = length(xvals);
for K = 1 : numx
x = xvals(K);
BW = GREY > big.*x;
count(K) = sum(BW(:));
end
0 Comments
More Answers (1)
the cyclist
on 5 May 2013
The way you have coded this, x is in a for loop, and the code will step through values of x, one by one, starting from 0 and ending at 1.
Instead, did you mean to simply make x a vector? Then you just need
x = 0.0 : step : 1.0;
without the loop.
0 Comments
See Also
Categories
Find more on NaNs in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!