How obtain a matrix from a "for" loop

조회 수: 2 (최근 30일)
Angela Marino
Angela Marino 2020년 7월 17일
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

답변 (0개)

카테고리

Help CenterFile Exchange에서 Heat and Mass Transfer에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by