MATLAB: Could anyone help me to solve the issue.

for loop

code:The below code executes and gives the result.
But i want to view swarm_pos for all particles in workspace.
When I run the code it displays only with respect to the second time of for loop result in workspace.
could anyone please help me on this.
particles=2;
dimensions=2;
PPP=[1,2;
3,4;
5,6;
7,8];
centroids=zeros(1,particles);
for particle=1:particles
P=numel(particle);
users=size(PPP,1);
centroids(particle)= randi(users,1,P)
fprintf('\nCentroids=%d\n',centroids(particle))
swarm_pos =rand(centroids(particle),dimensions,P)
end

Best Answer

  • Since the matrix size assigning to the variable "swarm_pos" is deifferent for each iteration, initialize the matrix as cell array class matrix, then you can get the variable as you required in the workspace
    Modify your code as below
    particles=2;
    dimensions=2;
    PPP=[1,2;
    3,4;
    5,6;
    7,8];
    centroids=zeros(1,particles);
    % Initialize your variable as cell array type as your required dimention either (1xparticles) or (particlesx1)
    swarm_pos = cell(1,particles);
    for particle=1:particles
    P=numel(particle);
    users=size(PPP,1);
    centroids(particle)= randi(users,1,P)
    fprintf('\nCentroids=%d\n',centroids(particle))
    swarm_pos{particle} =rand(centroids(particle),dimensions,P) % stores array values for each iteration
    end
    Access you data as
    swarm_pos{1}, swarm_pos{2}