Improper assignment with rectangular empty matrix., how to solve ?
11 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
Walter Roberson
2012 年 12 月 14 日
Read the documentation for isempty()
What value do you want stored in midpoints1(k) in this situation?
採用された回答
Walter Roberson
2012 年 12 月 14 日
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 件のコメント
Walter Roberson
2012 年 12 月 14 日
if isempty(leftEdge1)
midpoint1(k) = 0;
else
midpoints1(k) = (leftEdge1 + rightEdge1)/2;
%and do the plotting here
end
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!