simulink double value into a logical type error

if true
function y = ratioimg(u)
[L2,num2]=bwlabel(u,8); %連通區域標記
B2=false(size(u));
for i=1:num2
[r,c] = find(L2==i);
left = min(c);
right = max(c);
up = min(r);
down = max(r);
d = (down-up) / (right-left);
if d > 0.7 & d < 1.42
% [x,y]=find(L2==i); % Done above already
B2 = B2 + bwselect(u, c, r, 8); %%%把滿足長寬比在0.8到2的區域留下
end
end
y = B2;
end
i use this function on the simulink but show the error

7 Kommentare

Birdman
Birdman am 30 Jan. 2018
Can you share your simulink model?
KAI XUN CAI
KAI XUN CAI am 30 Jan. 2018
this
Birdman
Birdman am 30 Jan. 2018
Bearbeitet: Birdman am 30 Jan. 2018
Do you have to do the data type conversion inside a MATLAB Function block?
KAI XUN CAI
KAI XUN CAI am 30 Jan. 2018
no just that code
KAI XUN CAI
KAI XUN CAI am 30 Jan. 2018
so how to conversion?
Birdman
Birdman am 30 Jan. 2018
Which line the conversion will take place? Be more specific.
KAI XUN CAI
KAI XUN CAI am 30 Jan. 2018
B2 = B2 + bwselect(u, c, r, 8); change double

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Fangjun Jiang
Fangjun Jiang am 30 Jan. 2018

0 Stimmen

B2 is logical.
B2 = B2 + bwselect(u, c, r, 8)
should be
B2 = or(B2,bwselect(u, c, r, 8))

Gefragt:

am 30 Jan. 2018

Kommentiert:

am 30 Jan. 2018

Community Treasure Hunt

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

Start Hunting!

Translated by