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

24 views (last 30 days)
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 ?

Answers (2)

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

Wayne King
Wayne King on 11 Mar 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 Comment
I Made
I Made on 11 Mar 2013
Edited: I Made on 11 Mar 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?

Sign in to comment.

Categories

Find more on Data Types in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!