Matrix Multiplication Problem. Different Data Types.
Show older comments
Hi.. I have already posted a question before: http://mathworks.com/matlabcentral/answers/13018-array-of-matrices#answer_17796
This is sort of an extension of it.
My problem is, I do this:
A=imread(A) B=dct2(A) M=B*A*B'
Now, the final statement gives me an error since A is uint8 and B is double.
So what I did is, before the third step, I did: A=double(A)
Now, on doing imshow(A)...my entire image has changed from being that of a retina scan into a blank white image. I understand this is because of the type change, but the question is....will this cause any precision change in the multiplication that I am carrying out? After all, it is the value of M that is my main aim to find.
Also, on inserting a value in a 3D matrix array, I have to see the content of thousands of lines. Is there any way to stop that?
Answers (2)
Jan
on 4 Aug 2011
Instead of A = double(A), you can normalize the values to the intervall [0, 1]:
A = double(A) / 255
You can suppress the dispaly of the complete arrays by closing the statement with a semicolon:
A = rand(3);
A(1) = 5 % A is displayed
A(2) = 5; % A is not displayed
Walter Roberson
on 4 Aug 2011
0 votes
As I already indicated hours ago, instead of using double(A), I suggest you use im2double(A)
This is more general than Jan's solution in that im2double() will detect the proper scaling factor instead of assuming uint8.
Categories
Find more on Creating and Concatenating Matrices 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!