How to create an mxn matrix with a for-loop

조회 수: 43 (최근 30일)
Dominique Brasee
Dominique Brasee 2016년 7월 28일
댓글: Rik 2020년 11월 6일
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
ABISHAI JOY
ABISHAI JOY 2020년 2월 16일
How will you put cos (x+y) in to a matrix and it should generate random values with x, y between [0,2pi].
dpb
dpb 2020년 2월 16일
Use rand(), maybe???

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

채택된 답변

dpb
dpb 2016년 7월 28일
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
Dominique Brasee
Dominique Brasee 2016년 7월 28일
In the real program I will be computing a very large set of coordinates but I am trying to get a feel for a generic method (work asked me to do some modeling to fix some bugs in an existing program and I want to make sure I don't look like a complete idiot, since I am the intern haha).
Thank you for your help!
dpb
dpb 2016년 7월 28일
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
>>

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

추가 답변 (3개)

Lam Nguyen Van
Lam Nguyen Van 2020년 3월 10일
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
Rik
Rik 2020년 11월 6일
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.

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


Lam Nguyen Van
Lam Nguyen Van 2020년 4월 16일
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 2020년 4월 17일
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

카테고리

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