Octave binary operator * not implemented

Odpowiedz Nowy wątek
2018-11-03 15:14
Świetny Lew
0
 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

Pozostało 580 znaków

2018-11-03 15:44
0

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> 

Pozostało 580 znaków

2018-11-03 16:06
Świetny Lew
0
[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ś

Pozostało 580 znaków

2018-11-03 16:11
0

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.


edytowany 1x, ostatnio: lion137, 2018-11-03 16:12

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0