Portál AbcLinuxu, 6. listopadu 2025 12:21
). Jistě je to nějaká blbost, ale už se s tím trápím dva dny a nemám ten správný nadhed.
Děkuju předem za radu.
Řešení dotazu:
unsigned byte tak zkusit nadefinovat proměnnou alespon long.
s=sum(A(:))
whos A, tak Octave vypíše, že typ je uint8. Tak to přetypuj na double, tj. A=double(A), a bude to fungovat dle očekávání.
Pokud je cílem sečtení nějakých nadprahových hodnot, tak ani tehdy by kód neměl obsahovat žádný for; což třebas takhle:
s=sum(A(A>127))
. Díky.
s zapsat nějaké velké číslo nebo sečíst dvě velká čísla? 255 je samozřejmě maximum pro hodnotu v unsigned byte a pokud více místa nemá, nic nepřičte, Otázka je proč si pro s rezervoval tak málo nebo jestli při té sčítací operaci nepřechází přes něco co mu provede limitaci.
% soucet prvku matice s=0; for i=1:1:10 for j=1:1:10 A(i,j)=i+j b=A(i,j) s=s+b end enda to b bude normální číslo. možná provádí nějaké inteligentní odhady datových typů a pro ty čísla z obrázku má právě datový typ
unsigned byte.

% soucet matice
A=imread("bakterieBW.tif");
s=0;
for i=1:1:rows(A)
for j=1:1:columns(A)
b=A(i,j);
s=s+b;
end
end
disp(s)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.