In an assignment A(I) = B, the number of elements in B and I must be the same.

2 views (last 30 days)
clc
x=25;
y=25;
for i=1:10
r=rand;
if r<=0.25
x(i) =x+1
elseif r<=0.5 && r>0.25
y=y+1
else if r<=0.75 && r>0.5
x=x-1
else
y=y-1
end
end
x=x;
y=y;
end
comet(x,y)
plot(x,y)
end
The above code generates the error:
In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in xy (line 7)
x(i) =x+1
Can you please help me in modifying the code in right way so that I can balance the vectors.
I am really sorry for asking this kind of question again and again as I have seen the repetitions, but it was a failure to gain the correct answer. Thank You.
  2 Comments
iCalif
iCalif on 11 Oct 2012
I am not using DBSTOP since this is the point where i am having the error. I need to use the array and am unclear on implementing it as a vector.

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 11 Oct 2012
Edited: Image Analyst on 11 Oct 2012
Try
x(i) = x(i) + 1;
Full Demo:
clc;
clearvars;
close all;
workspace;
format longg;
format compact;
fontSize = 16;
numberOfSteps = 10;
r = rand(numberOfSteps, 1);
x = zeros(numberOfSteps, 1);
y = zeros(numberOfSteps, 1);
x(1) = 25; % Starting location.
y(1) = 25; % Starting location.
subplot(2, 2, 3:4);
hold on;
% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
drawnow;
for k = 2 : numberOfSteps
if r(k) <= 0.25
x(k) = x(k-1) + 1 % Move x by 1.
y(k) = y(k-1); % No change;
elseif r(k) <= 0.5 && r(k) > 0.25
x(k) = x(k-1); % No change;
y(k) = y(k-1) + 1 % Move y by 1.
elseif r(k) <= 0.75 && r(k) > 0.5
x(k) = x(k-1) - 1 % Move x by 1.
y(k) = y(k-1); % No change;
else
x(k) = x(k-1); % No change;
y(k) = y(k-1) - 1 % Move y by 1.
end
text(x(k)+0.05, y(k), num2str(k), 'fontSize', fontSize);
end
subplot(2, 2, 1:2);
comet(x,y);
grid on;
title('Comet', 'fontSize', fontSize);
subplot(2, 2, 3:4);
plot(x, y, 'bs-', 'LineWidth', 2);
title('Plot', 'fontSize', fontSize);
grid on;
  1 Comment
iCalif
iCalif on 11 Oct 2012
Thank You very much Image Analyst. I got the answer from you, thank you. Solution for those with similar problem:
x = zeros(numberOfSteps, 1); <== This step is essential as it creates the Zero array.

Sign in to comment.

More Answers (1)

Matt Fig
Matt Fig on 11 Oct 2012
You are trying to put a vector into a single element of x.... That won't work. What are you trying to do here? It looks like you are trying to build an array x, but what about y? Do you want to build that as an array too?
  2 Comments
iCalif
iCalif on 11 Oct 2012
Thanks Matt, I need to create a 2D array wherein I need to move x & y independently depending on the random number case. So I need to build an array and plot the graph.
iCalif
iCalif on 11 Oct 2012
And yes, I would like to build an array with y too, but if the x(i) function works, i will be able to proceed with y the same way.

Sign in to comment.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!