Save variable from each run through of a loop into .mat file?
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Hi folks,
I have my looped function
if true
  for Z = 1:length(ev_longitude)
x1 = -4:10;                                %Grid x-range
A = min(ev_longitude(Z),st_longitude(Z));  %Determine min x coordinate of line
B = max(ev_longitude(Z),st_longitude(Z));  %Determine max x coordiante of line
x = [A B];                                 %x-range of line
y1 = 56:63;                                %Grid y-range
C = min(ev_latitude(Z),st_latitude(Z));    %Determine min y coordinate of line
D = max(ev_latitude(Z),st_latitude(Z));    %Determine max y coordinate of line
y = [C D];                                 %y-range of line
lxmb = @(x,mb) mb(1).*x + mb(2);           %Line equation: y = m*x+b
coefficients = polyfit([A, B], [C, D], 1); %Determine line coefficients
m = coefficients (1);                      %Gradient
b = coefficients (2);                      %y-value intercept
mb = [m b];                                %Matrix of [slope intercept] values
L1 = lxmb(x,mb);                           %Calculate Line #1 = y(x,m,b)
start_of_line = [A C];                     %Start of line 
end_of_line = [B D];                       %End of line
hix = @(y,mb) [(y1-mb(2))./mb(1);  y1];    %Calculate horizontal intercepts
vix = @(x,mb) [x1;  lxmb(x1,mb)];          %Calculate vertical intercepts
hrz = hix(x(1:end),mb)';                   %[X Y] Matrix of horizontal intercepts
vrt = vix(y(1:end),mb)';                   %[X Y] Matrix of vertical intercepts
hvix = [start_of_line; hrz; vrt; end_of_line]; %Concatanated ‘hrz’ and ‘vrt’ arrays
srtd = unique(hvix,'rows');                    %Remove repeats and sort ascending by ‘x’
Longitude_Values = srtd(:,1);
Latitude_Values = srtd(:,2);
i = find((Latitude_Values<=D) & (Latitude_Values>=C));    %Remove values beyond the drawn line
Final_Latitude_Values=Latitude_Values(i);                 %Remove values beyond the drawn line
ii = find((Longitude_Values<=B) & (Longitude_Values>=A)); %Remove values beyond the drawn line
Final_Longitude_Values=Longitude_Values(i);               %Remove values beyond the drawn line
for j = 1:length(Final_Latitude_Values)-1                         %Determine the distance per  each segment
Segment_Distances(j) = sqrt((Final_Longitude_Values(j+1)-Final_Longitude_Values(j))^2 + (Final_Latitude_Values(j+1)-Final_Latitude_Values(j))^2); %euclidean distance in degrees.
end
Final_Segment_Distance_Per_Travel_Path = Segment_Distances(1:end) %Final segment per travel path
save('End_Data','Final_Segment_Distance_Per_Travel_Path')
clearvars -except ev_latitude ev_longitude st_latitude st_longitude
end 
end
It produces a variable called Final_Segment_Distance_Per_Travel_Path. I want to save this value each time to a .mat file using the save function, without the previous value being overwritten each time the loop runs.
Thanks for any help.
0 comentarios
Respuesta aceptada
  KSSV
      
      
 el 14 de Sept. de 2018
        Check this demo code:
n = 10 ; % loop count 
filename='test.mat';
File = matfile(filename, 'Writable', true); 
for i = 1:n
  SE = rand(1,2) ;
  DE = rand(1,3) ;
  % save variables to file 
  File.SE(i,1:2) = SE ;
  File.DE(i,1:3) = DE ;
end
clear File;
0 comentarios
Más respuestas (0)
Ver también
Categorías
				Más información sobre Software Development Tools en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

