MATLAB Answers

How to create an mxn matrix with a for-loop

779 views (last 30 days)
Dominique Brasee
Dominique Brasee on 28 Jul 2016
Commented: Rik on 6 Nov 2020
Hello all,
I would like to display (x(i),y(j)) in separate columns according to the x(i)'s.
i.e.:
(0,0) (1,0) (2,0)
(0,1) (1,1) (2,1)
(0,2) (1,2) (2,2), etc.
I am currently using a nested for-loop to calculate all (x(i),y(j)) as follows:
for i = 1:3
a = i-1;
for j = 1:3
b = j-1;
X = [a b];
disp(X);
end
end
I get the output as follows:
0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2
I tried using reshape to display the output as above, however in fiddling with the program, I discovered that MATLAB considers each line of output to be a separate 1x2 matrix. Do you have any suggestions as to how to get MATLAB to recognize the outputs as a 9x2 matrix? This is an extremely scaled-down version of what I need the program to do.
Thank you!!
  4 Comments

Sign in to comment.

Accepted Answer

dpb
dpb on 28 Jul 2016
As you've written it, you only have a 1x2 (row) vector at any one time, you overwrite X on each pass. There are certainly more efficient ways to generate this, but the issue with respect to building an array is simple to handle; I presume there's something much more than this going on in the real problem...
N=3;
k=0;
for i=0:N-1
for j=0:N-1
k=k+1;
X(k,:) = [i j];
end
end
disp(X)
  2 Comments
dpb
dpb on 28 Jul 2016
You recognize that looping isn't very Matlab-like here, I presume?
>> [reshape(repmat(0:N-1,N,1),[],1) repmat(0:N-1,1,N).']
ans =
0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2
>>

Sign in to comment.

More Answers (3)

Lam Nguyen Van
Lam Nguyen Van on 10 Mar 2020
Hi,
I want to creat matrices automatically with for loop in Matlab?
phi1=30; phi2=45; phi3=90;
After running the code I want to have a matric A with the following elements:
A=[sin(phi1) cos(phi1) sin(phi1)*cos(phi1);
sin(phi2) cos(phi2) sin(phi2)*cos(phi2);
sin(phi3) cos(phi3) sin(phi3)*cos(phi3);]
  1 Comment
Rik
Rik on 6 Nov 2020
Your answers look like questions. Please post them as questions. Have a read here and here. It will greatly improve your chances of getting an answer.

Sign in to comment.


Lam Nguyen Van
Lam Nguyen Van on 16 Apr 2020
https://www.mathworks.com/matlabcentral/answers/372036-can-you-create-a-matrix-using-a-for-loop?s_tid=mlc_ans_email_view&utm_source=zalo&utm_medium=zalo&utm_campaign=zalo&zarsrc=1303

Lam Nguyen Van
Lam Nguyen Van on 17 Apr 2020
clear;
phi=[30, 45, 90];
n=length(phi);
A=zeros(n,3);
for i=1:n
[d]= ham_luong_giac (phi(i));
A(i,:)=[d];
end
A
function [xuat] = ham_luong_giac (phi)
a1=sin(phi);
a2=cos(phi);
a3=sin(phi).*cos(phi);
xuat= [a1, a2, a3];
end

Community Treasure Hunt

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

Start Hunting!