MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Chien-Chia Huang on 15 Jun 2011

Hi, I am using "gamultiobj" to solve my problem. I, however, have no idea why the error message occurred

??? Error using ==> mtimes Inner matrix dimensions must agree.

Error in ==> col_mop>@(x)x'*(B'*B)*x at 50 fun1 = @(x) x'*(B'*B)*x;

My objective function is coded as follows

fun1 = @(x) x'*(B'*B)*x; fun2 = @(x) x'*x; bifun = @(x) [fun1(x) fun2(x)];

The dimension of B'*B is *m* so x is an *m*-by-1 vector. The syntax for gamultiobj is

X = gamultiobj(FITNESSFCN,NVARS,A,b,Aeq,beq,LB,UB,options)

I have properly input the number of decision variables (NVARS) as m but the error message shows. I also check the dimensions using the command "whos" which showed what I wanted. Is there anything wrong?

Thanks in advance.

Answer by Paulo Silva on 15 Jun 2011

Accepted answer

Error correction...inner matrix dimensions must be same??? how to correct ?

(look at Matt Fig answer on that question)

Show 2 older comments

Matt Fig on 15 Jun 2011

@Chhien-Chia,

Show us the output of the following:

size(x) % I mean the argument to fun1 here...

size(B)

Chien-Chia Huang on 15 Jun 2011

Thanks a lot, Paulo! I just found out what the problem is. The x in gamultiobj is by default supposed to be a row vector, but I thought intuitively of x as a column vector. The problem was just solved.

Chien-Chia Huang on 16 Jun 2011

sorry Matt I did not see your reply. The output of size(B) was 5-by-10 and size(x) was 10-by-1. But the requested x in gamultiobj should be 1-by-10. Thanks, anyway. :D

## 0 Comments