Plotting a digital polymer chain.

I got the instructions from my professor and have no idea how to complete the code. The A beads should be red and the B beads should be blue.
1) Create two empty 30 x 2 matrices; one matrix for A beads, the other for B beads.
2) Open a for loop from index i=1:30
3) Calculate a random number
4) If the random number is <=0.5, then for the A matrix, change the i,1 element to the current index in the for loop, and the i,2 element to a value of 1.
If the random number is >0.5, then for the B matrix, change the i,1 element to the current index in the for loop, and the i,2 element to a value of 1.
5) Repeat steps 3 and 4 all the way up to i = 30
6) Close the for loop
7) Remove all the zero rows from the A and B matrices
8) Plot the beads

Answers (1)

Sydney Carrow
Sydney Carrow on 15 Mar 2021
I don't have any attempts because I do not know how to do any of it. I can't figure out how to make empty matrices. Once creating the loop, I do not not how to do what he said.

7 Comments

You are in a terrible situation. What can i do for you?
1) show how to create empty matrices as he described and 2) show how to make i,1 change in A
Here you go
A = zeros(30,2);
B = zeros(30,2);
for i = 1:30
num = rand;
if num < 0.5
A(i,1) = num;
end
end
How do I make A(i,1) to the current index in the loop?
Current index is "i"
This is the code I have created. Now though, the index isn't transfering to A or B as the current index when needed. What can I do?
%chain 1
A=zeros(30,2);
B=zeros(30,2);
for i=1:30
if A(i,1)==i || rand<=0.5
A(i,2)=1;
A(i,1)=i;
else
B(i,1)=i;
B(i,2)=1;
if B(i,1)==i || rand<=0.5
A(i,1)=i;
A(i,2)=1;
else
B(i,1)=i;
B(i,2)=1;
end
end
end
%Deletes all zeros in A
TestForZero = A(:,1) == 0;
A(TestForZero, :) = []
%Deletes all zeros in B
TestForZero = B(:,1) == 0;
B(TestForZero, :) = []
%graphs
hold on
plot(A(:,1),A(:,2),'o','MarkerFaceColor',"red",'MarkerSize',15)
plot(B(:,1),B(:,2),'o','MarkerFaceColor',"blue",'MarkerSize',15)
title("Digital Copolymerchain 4")
axis off
hold off
%Deletes all zeros in A
TestForZero = A(:,1) == 0;
A(TestForZero, :) = []
%Deletes all zeros in B
TestForZero = B(:,1) == 0;
B(TestForZero, :) = []
%graphs
hold on
plot(A(:,1),A(:,2),'o','MarkerFaceColor',"red",'MarkerSize',15)
plot(B(:,1),B(:,2),'o','MarkerFaceColor',"blue",'MarkerSize',15)
title('Digital Colymerchain 1')
axis off
hold off
Here are some corrections
You don't need to check A(i,1)==i part
if A(i,1)==i || rand<=0.5
You don't need red square part (it's the same as above)

Sign in to comment.

Asked:

on 15 Mar 2021

Commented:

on 18 Mar 2021

Community Treasure Hunt

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

Start Hunting!