MATLAB Answers


Subscripted assignment dimension mismatch.

Asked by Jonathan Wilson on 18 Jun 2013

% name: MaxEff.m function [MaxEff] = KTKQMaxEffoutput(OptEff)

MaxEff = zeros(size(OptEff, 2), size(OptEff, 3)); for im = 1:size(OptEff, 2) for iim = 1:size(OptEff, 3) MaxEff(im, iim) = findpeaks(OptEff(:, im,iim)); end end %MaxEffAVE = zeros(MaxEff, 1); %for ia = 1:size(MaxEff, 2) % MaxEffAVE(ia) = findpeaks(MaxEff(:, ia)); %end


that is my code and the OptEff is 17x10x11 and i want to get the peaks out!

Please help me.

  1 Comment

Do you see that omitting the code formatting decreases the readability of your code?

Log in to comment.


1 Answer

Answer by Elliot Olsen on 18 Jun 2013

Hi Jonathan,

Your problem is that the findpeaks function can return an empty array, [ ], or an array with multiple entries [peak1, peak2, ..., peakN], neither of which can be assigned to a single array element.

My suggestion would be to make your MaxEff variable a cell rather than an array. Declare MaxEff like this:

MaxEff = cell(size(OptEff, 2), size(OptEff, 3));

and access it like this:

MaxEff{im, iim} = findpeaks(OptEff(:, im,iim)); 

Hope that helps,


  1 Comment

That is a great answer :) sorted!

Log in to comment.

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today