Improper assignment with rectangular empty matrix., how to solve ?

9 visualizzazioni (ultimi 30 giorni)
hey everyone
please i am getting this error :
Improper assignment with rectangular empty matrix on this line :
midpoints1(k) = (leftEdge1 + rightEdge1)/2;
how can i solve that ? any help is appreciated, thanks
for k=700:800
oneRow1 = binaryImage(k, :);
leftEdge1 = find(oneRow1, 1, 'first');
rightEdge1 = find(oneRow1, 1, 'last');
hold on;
midpoints1(k) = (leftEdge1 + rightEdge1)/2;
plot(leftEdge1, k, 'rx','LineWidth',2);
plot(rightEdge1, k, 'rx','LineWidth',2);
plot(midpoints1(k), k, 'yx','LineWidth',2);
end
X1=(700:800);
midpoints1=midpoints1(midpoints1~=0);
new_x1 = linspace(500, 900);
coeffs1 = polyfit(X1, midpoints1, 1);
new_y1 = polyval(coeffs1, new_x1);
plot(new_y1,new_x1, '-','LineWidth',2);
  6 Commenti
Walter Roberson
Walter Roberson il 14 Dic 2012
Read the documentation for isempty()
What value do you want stored in midpoints1(k) in this situation?
mounim
mounim il 14 Dic 2012
Modificato: mounim il 14 Dic 2012
it have to just store a zero ( a black pixel ), i tried this code, but it is not working 100% still gives me errors:
if isempty(midpoints1(k)) then
midpoints1(k)== 0;
end
this one not working neither
if isempty(midpoints1(k)) then
midpoints1(k)= zeros(size(midpoints1(k)));
end

Accedi per commentare.

Risposta accettata

Walter Roberson
Walter Roberson il 14 Dic 2012
In some rows, there are no 1's. When that happens, the results of find() are empty. You are trying to store the midpoint of that empty range into midpoints1(k), which requires a location which is a 1x1 value not a 0 x 0 value.
  1 Commento
Walter Roberson
Walter Roberson il 14 Dic 2012
if isempty(leftEdge1)
midpoint1(k) = 0;
else
midpoints1(k) = (leftEdge1 + rightEdge1)/2;
%and do the plotting here
end

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Programming in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by