out(a,b,1)=image(i,j,1)*2i;
próbuję pomnożyć piksel obrazu przez liczbę zespoloną, otrzymuję error:
binary operator '*' not implemented for 'uint8 scalar' by 'complex scalar' operations
dla mnożenia pojedynczych liczb wszystko działa
out(a,b,1)=image(i,j,1)*2i;
próbuję pomnożyć piksel obrazu przez liczbę zespoloną, otrzymuję error:
binary operator '*' not implemented for 'uint8 scalar' by 'complex scalar' operations
dla mnożenia pojedynczych liczb wszystko działa
Nie wiem co Masz środku image
, ale u mnie takie coś działa:
octave:6> A = [2, 1, 0, -1]
A =
2 1 0 -1
octave:7> c = 4i
c = 0 + 4i
octave:8> c * A
ans =
0 + 8i 0 + 4i 0 + 0i -0 - 4i
octave:9>
[image,map]= imread('abc.png');
[N,M,x]=size(image);
out=zeros(N,M,3);
for a=1:N
for b=1:M
out(a,b,1)=image(a,b,1)*-2i;
end
end
u mnie też działa to co napisałeś
Yhm, wiem czemu, bo domyślnie te tablice są typu double
, który Octave
potrafi pomnożyć przez complex
, przeciwnie do int8
:
octave:4> int8(x) * 2i
error: binary operator '*' not implemented for 'int8 scalar' by 'complex scalar' operations
Wniosek: Musisz skonwertować elementy tensora do typu double
.