Filter löschen
Filter löschen

Error Integers can only be combined with integers of the same class, or scalar doubles when processing my sample?

12 Ansichten (letzte 30 Tage)
I have a3, it's data < 64x490 int16 > , and i wanted to do *row1*row1*1 then row2*row2*2 to row49*row49*49 and have the sum of it. And apply it to all other columns too. i have tried using this code :
[g,h]=size(a3);
m=1:g;
t=sum(a3(m,:).*a3(m,:).*m);
but i get this error message : ??? Error using ==> times Integers can only be combined with integers of the same class, or scalar doubles.
this code work only if we remove the .*m and become like this:
[g,h]=size(a3);
m=1:g;
t=sum(a3(m,:).*a3(m,:));
but the formula from row1*row1*1 become row1*row1 only, can anyone correct my mistake ?

Antworten (2)

Image Analyst
Image Analyst am 11 Mär. 2013
Try
m = int16(1:g);
Be aware that if the numbers get larger than 32767, they will clip.

Wayne King
Wayne King am 11 Mär. 2013
The error you get is because
m = 1:g;
gives you a double precision vector, while a3 is int16. You can remove that error by casting m to int16
m = int16(1:g);
or a3 to double precision
a3 = double(a3);
but then you're going to get dimension error. Did you mean to have a for loop?
  1 Kommentar
I Made
I Made am 11 Mär. 2013
Bearbeitet: I Made am 11 Mär. 2013
yeah you right, actually i need to be n=1,2,3,4,5... as i wanted to have a sum of(sampel(n)*sample(n)*n), where n is the number of row. to be more clear let me explain a bit :
so i have e.g
4 5 3
5 4 1
2 1 2
i wanted to got
78 60 23
and the process is like :
Column 1->(4*4*1)+(5*5*2)+(2*2*3) then Column 2->(5*5*1)+(4*4*2)+(1*1*3) then Column 3->(3*3*1+1*1*2+2*2*3)
How can i achieve this?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Data Types finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by