Subscripted assignment dimension mismatch.

1 view (last 30 days)
Hello all,
I know this is a common error and their seem to be millions of solutions for it however I can't get my code to run. I have read all the example I can find but non seem to help. this is my code:
a1=imread('1V.png'); a2=imread('2V.png'); a3=imread('3V.png'); a(:,:,1)=a1; a(:,:,2)=a2; a(:,:,3)=a3;
for t=1:3; y=a(:,:,t); Isum=sum(y,1); [Imax, Iloc]=max(Isum); I(t)=y(:,Iloc); end
The code runs fine if I place a single value in for t, however when I run it as a loop the subscript dimensions mismatch error pops up. I want the code to give me a matrix containing all of the I values, three columns in this case.

Accepted Answer

KL
KL on 11 Dec 2017
Edited: KL on 11 Dec 2017
imread returns a 3D matrix. If you want to read multiple images and store them in one matrix, use a 4D matrix,
for k = 1:3
a(:,:,:,k) = imread([num2str(k) 'V.png']);
%other code
end
  4 Comments
Robbie McDermott
Robbie McDermott on 11 Dec 2017
AH! Using l(:,t) has fixed it! Thank you very very much! that will save me a lot of time!
Thank you so much, very very much appreciated!!
KL
KL on 11 Dec 2017
Edited: KL on 11 Dec 2017
You're very welcome!
Another tip: Always try to preallocate your matrices before loop, this would greatly improve your code's performance. For example,
l = zeros(256,3);

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!