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

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 件のコメント

Matt J
Matt J 2012 年 10 月 11 日
Learn to use DBSTOP and breakpoints.
iCalif
iCalif 2012 年 10 月 11 日
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.

サインインしてコメントする。

 採用された回答

Image Analyst
Image Analyst 2012 年 10 月 11 日
編集済み: Image Analyst 2012 年 10 月 11 日
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 件のコメント

iCalif
iCalif 2012 年 10 月 11 日
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.

サインインしてコメントする。

その他の回答 (1 件)

Matt Fig
Matt Fig 2012 年 10 月 11 日

0 投票

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 件のコメント

iCalif
iCalif 2012 年 10 月 11 日
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 2012 年 10 月 11 日
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.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by