How obtain a matrix from a "for" loop

2 visualizaciones (últimos 30 días)
Angela Marino
Angela Marino el 17 de Jul. de 2020
Hi, I have a problem. I have this code
close all
clear all
%numero di simulazioni
num_simulazioni=2;
%cartella in cui salvare i dati
% cartella = 'OUTPUT_SIMULAZIONI';
% mkdir('OUTPUT_SIMULAZIONI')
%%
%ciclo for per simulazione automatizzata
for c=1:num_simulazioni
%generazione valore casuale
simulazione=rand();
%condizione per scelta del file sumo
% if simulazione < 0.5
% system(['sumo -c' 'C:\Users\angel\Desktop\prova_flussi\simulazione_57\r2_traci_57.sumocfg &']);
% else
system(['sumo -c' 'C:\Users\angel\Desktop\prova_flussi\simulazione_79\r2_traci_79.sumocfg &']);
% end
[traciVersion, sumoVersion]= traci.init(8873);
simulazione=round(simulazione);
%Definizioni variabili
veicoli_controllati={'R2.0'; 'R2.1';'R2.2';'R2.3'};
tempo_simulazione=7200;
%inizializzazione variabili posizione
Xpos=zeros(tempo_simulazione,length(veicoli_controllati));
Ypos=zeros(tempo_simulazione,length(veicoli_controllati));
veloc=zeros(tempo_simulazione,length(veicoli_controllati));
num_persone=zeros(tempo_simulazione,length(veicoli_controllati));
distanza=zeros(tempo_simulazione,length(veicoli_controllati));
lat=zeros(tempo_simulazione,length(veicoli_controllati));
lon=zeros(tempo_simulazione,length(veicoli_controllati));
%inizializzazione variabili per ML
veloc_ML=zeros(28,length(veicoli_controllati));
pers_ML=zeros(28,length(veicoli_controllati));
check_point=zeros(28,length(veicoli_controllati));
%posizioni fermate R2
pos_R2=importdata('pos_R2.txt');
f=1;
%ciclo for per calcolo valori
for i = 1:tempo_simulazione
traci.simulationStep();
%Leggo i veicoli in rete
VEHID=traci.vehicle.getIDList();
for j=1:length(veicoli_controllati)
%Leggo le informazioni relative al veicolo investigato
if ismember(veicoli_controllati{j},VEHID)==1
%posizione bus
pos=traci.vehicle.getPosition(veicoli_controllati{j});
Xpos(i,j)=pos(1);
Ypos(i,j)=pos(2);
%capacità bus
num_persone(i,j)=traci.vehicle.getPersonNumber(veicoli_controllati{j});
%velocità bus
veloc(i,j)=traci.vehicle.getSpeed(veicoli_controllati{j});
%ascissa curvilinea
distanza(i,j)=traci.vehicle.getDistance(veicoli_controllati{j});
%conversione x,y in lat,long
[lat(i,j), lon(i,j)]=traci.simulation.convertGeo(Xpos(i,j),Ypos(i,j));
dist_from_stop=pos_R2-distanza(i,j);
dist_from_stop(dist_from_stop<0)=1000;
%ciclo if interno per capire tra quali fermate sono
check_dist=find(dist_from_stop<5);
if check_dist>0
if check_dist==f
check_point(f,j)=i;
if f>1
veloc_ML(f,j)=mean(veloc(check_point(f-1,j):check_point(f,j),j));
pers_ML(f,j)=mean(num_persone(check_point(f-1,j):check_point(f,j),j));
end
f=f+1;
end
end
else
Xpos(i,j)=NaN;
Ypos(i,j)=NaN;
num_persone(i,j)=NaN;
veloc(i,j)=NaN;
distanza(i,j)=NaN;
lat(i,j)=NaN;
lon(i,j)=NaN;
end
end
end
%chiusura comunicazione e prompt
traci.close();
system('"C:\Windows\System32\taskkill.exe" /F /im cmd.exe &');
m_pers{c,1}=pers_ML';
end
Where the first part is necessary to start the simulation from a particular softwer (SUMo). The variables that come out of this code are in the attached file.
Now, I have two kind of problems:
  1. In this part of code
dist_from_stop=pos_R2-distanza(i,j);
dist_from_stop(dist_from_stop<0)=1000;
%ciclo if interno per capire tra quali fermate sono
check_dist=find(dist_from_stop<5);
if check_dist>0
if check_dist==f
check_point(f,j)=i;
if f>1
veloc_ML(f,j)=mean(veloc(check_point(f-1,j):check_point(f,j),j));
pers_ML(f,j)=mean(num_persone(check_point(f-1,j):check_point(f,j),j));
end
f=f+1;
end
end
only the first column of the veloc_ML and pers_ML vectors is updated while the other columns remain zero. How could I solve it?
2. I need to save veloc_ML and pers_ML concatenating the matrices obtained for each c
m_pers{c,1}=pers_ML';
I tried in this way but I think it's wrong because I want obtain a matrix (double), not a cell. How can I do?
I want something like
pers_ML
R2.1 0 0 0 0 7.1695 8 8 8
R2.2 .........
R2.3 .........
R2.4 .........
R2.1
R2.2
R2.3
R2.4
veloc_ML
R2.1 0 4.1259 8.3535 2.1687 2.9680 .....
R2.2 .........
R2.3 .........
R2.4 .........
R2.1
R2.2
R2.3
R2.4

Respuestas (0)

Categorías

Más información sobre MATLAB en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by