Convert vector loop to matrix loop

There is a loop for working with a vector, can it be made to work with a matrix?
z=zeros(100,900); %
x=z(:,1);
y=x;
j=1;
i=1;
u=1;
c=rand(1,900);
for i=1:100
j=j+1;
x(j)=x(i)+0.4*cos(20)/0.226*pi+c(1);
% in the c(1) loop this is because the loop is for the first column,
% in the matrix loop it should be c(num)
u=u+1
y(u)=y(i)+0.64*sin(78)/x(i)*pi+c(1);
end
I will be glad to any advice

4 Comments

what is value of "a" ? if i choose the variable "a" as a random number, then
a=randi(10,1,100);
z=zeros(100,900); %
x=z(:,1);
y=x;
j=1;
i=1;
u=1;
c=rand(1,900);
for i=1:100
j=j+1;
x(j)=x(i)+0.4*cos(20)/0.226*pi+c(1);
% in the c(1) loop this is because the loop is for the first column,
% in the matrix loop it should be c(num)
u=u+1;
y(u)=y(i)+0.64*sin(78)/a(i)*pi+c(1);
end
the value of "a" is the value of "x", in future versions of the code, the variable "a" had to be abandoned
Which variable(s) is/are supposed to be a matrix?
It looks like you need not to use a loop here....tell us your problem, you can vectorize the code striaght away.

Sign in to comment.

 Accepted Answer

DGM
DGM on 22 Feb 2022
Edited: DGM on 22 Feb 2022
You mean like this?
c = rand(1,900);
x = zeros(100,900);
y = x;
for k = 1:99
x(k+1,:) = x(k,:) + 0.4*cos(20)/0.226*pi + c;
y(k+1,:) = y(k,:) + 0.64*sin(78)./x(k,:)*pi + c;
end
... but I should ask how you say it's working when it's clearly dividing by zero and creating an entire array of Infs

More Answers (0)

Products

Asked:

on 22 Feb 2022

Edited:

DGM
on 22 Feb 2022

Community Treasure Hunt

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

Start Hunting!