Subscripted assignment dimension mismatch.

조회 수: 1 (최근 30일)
Robbie McDermott
Robbie McDermott 2017년 12월 11일
편집: KL 2017년 12월 11일
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.

채택된 답변

KL
KL 2017년 12월 11일
편집: KL 2017년 12월 11일
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
Robbie McDermott
Robbie McDermott 2017년 12월 11일
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 2017년 12월 11일
편집: KL 2017년 12월 11일
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);

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by