Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Making bigger matrix with smaller matrixes elements.

Asked by Ayob on 21 Apr 2013

I'm assembling a bigger matrix with elements of other smaller matrixes. in my method I build a connecting vector for example C=[1 5 6 7 8 9] when in each element like for example C(2)=5, 2 is a local dimension in smaller matrix and 5 is a global dimension in main matrix which is assembled.

If I want to use easy code writing I should use this kind of coding:

    %for i=1:size(C,2)
    for j=1:size(C,2)
    B(C(i),C(j))=A(i,j)

but I'm trying to use Matlab special features in matrix calculations to put A with local dimension in B with global dimension. because Matlab features are fast and need less code writing.

Note: A and B are n*n and m*m matrixes.

3 Comments

Image Analyst on 21 Apr 2013

First of all, let's see if this is what you meant (since your code does not run as-is, and I tried to fix it but am not sure I got what you intended):

    C=[1 5 6 7 8 9]
    A = magic(9); % Some sample data.
    for i=1:size(C, 1)	
    	for j=1:size(C, 2)		
    		B(C(i),C(j))=A(i,j);	
    	end	
    end
    B

Results in command window:

C =
     1     5     6     7     8     9
B =
    47     0     0     0    58    69    80     1    12
Ayob on 21 Apr 2013

Yes,you are right.But A and B are both matrixes not vectors.

Image Analyst on 21 Apr 2013

Please take note that A is a 2D 9 by 9 matrix. And B ended up as a 1D row vector because your loop over i only went from 1 to size(C,1), in other words from 1 to 1 so it did just one row. That was your code, not mine, though you commented it out. That's why I asked you if my attempts to fix your code were correct, which you said it was.

Ayob

Products

No products are associated with this question.

1 Answer

Answer by Matt J on 21 Apr 2013
Accepted answer
 B(C,C)=A;

2 Comments

Matt J on 21 Apr 2013

You're confusing people by writing

%for i=1:size(C,2)

with the '%', as if you have commented this line out. Is there a loop over i or not? If yes, why do you have the '%'? And if i runs from 1 to size(C,2)=4 then A needs to have 4 rows in order for A(i,j) to be accessible when i=4.

Ayob on 21 Apr 2013

Clear and complete answer by Matt J.

Matt J

Contact us