Change inner loop indexing old_version
authorLukáš Jiřiště <jiriste@icpf.cas.cz>
Tue, 6 Aug 2024 08:27:59 +0000 (10:27 +0200)
committerLukáš Jiřiště <jiriste@icpf.cas.cz>
Tue, 6 Aug 2024 13:31:43 +0000 (15:31 +0200)
The inner loop now uses iteration counter as index and calculates a
separate index for files. This makes the allocated memory smaller and
indexing of some variable easier, especially plotting makes more sense.

Bubliny.m

index ee11a3bc777ab32f314d3923d3af8cb8528c3bca..3e103f91d1a08f610239c90c112591962edc157a 100755 (executable)
--- a/Bubliny.m
+++ b/Bubliny.m
@@ -52,14 +52,6 @@ for iii=1:1:nSelectedDirectory  % Cycles for directories with files
        nFFiles = numel(FFiles);                                                % Counts files\r
        LevelNum=str2double(SelectedDirectory{iii}(7:9))*1000;\r
 \r
-%% variable allocation\r
-\r
-       Height = zeros(1,nFFiles);\r
-       Metr_fit_H = zeros(1,nFFiles);\r
-       Bottom = zeros(1,nFFiles);\r
-       Metr_fit_B = zeros(1,nFFiles);\r
-\r
-%%\r
 % Initiation from the first file\r
        ImageName = FFiles(1).name;\r
        start_time = duration([(ImageName(8:9)) ':' (ImageName(10:11)) ':' (ImageName(12:16))],'Format',infmt);\r
@@ -68,14 +60,25 @@ for iii=1:1:nSelectedDirectory  % Cycles for directories with files
        [MeterScale, polypar_Metr] = meter(SelectedDirectory{iii}, ContrastFigure, ResFile);\r
        D_num=str2double(SelectedDirectory{iii}(21));                   % position of camera\r
 \r
-% load of all files in cycles\r
+% Set loop variables\r
        step=1;\r
        startFile= 40;                                          %945;   %200 (20. )\r
        endFile= 110; %nFFiles;                                           %1000;  %325 (20.)\r
-       nFFiles=endFile;                                                        % Attention!!!\r
-       for jjj=startFile:step:nFFiles                                      % Cycles for figures files\r
-               ImageName = FFiles(jjj).name;\r
-               Figure = imread([FFiles(jjj).folder '/' ImageName]);\r
+       nFFiles=(endFile - startFile / step) + 1;                          % Attention!!!\r
+\r
+%% variable allocation\r
+\r
+       Height = zeros(1,nFFiles);\r
+       Metr_fit_H = zeros(1,nFFiles);\r
+       Bottom = zeros(1,nFFiles);\r
+       Metr_fit_B = zeros(1,nFFiles);\r
+\r
+%%\r
+% load all files in a loop\r
+       for jjj=1:nFFiles                                     % Cycles for figures files\r
+               file_ind = startFile + (jjj - 1) * step;\r
+               ImageName = FFiles(file_ind).name;\r
+               Figure = imread([FFiles(file_ind).folder '/' ImageName]);\r
                ContrastFigure = imadjust(Figure);                                  % Adjust the contrast of the image using imadjust.\r
                IntensitiesAverFin{jjj} = get_representative_intensities(ContrastFigure);\r
 \r
@@ -85,7 +88,7 @@ for iii=1:1:nSelectedDirectory  % Cycles for directories with files
                imshow(ContrastFigure, 'Parent', ax)\r
                hold(ax, 'on');\r
                plot(ax, IntensitiesAverFin{jjj},'-y','linewidth',2)\r
-               if jjj>=startFile+step                                                            %subtracts the intensities\r
+               if jjj > 1                                                            %subtracts the intensities\r
                        plot(IntensitiesAverFin{jjj-step},'Color',[0.9290 0.6940 0.1250],'linewidth',2)\r
                        hold on\r
                        IntensitiesAverFin_2{jjj}=IntensitiesAverFin{jjj}-IntensitiesAverFin{jjj-step};\r
@@ -105,52 +108,52 @@ for iii=1:1:nSelectedDirectory  % Cycles for directories with files
                % % plot(lk,abs(pk),'oc','linewidth',2)\r
                if D_num==1\r
                        LevelPixels=MeterScale(1+(1000-LevelNum)/100);                 % x level in pixels in the original image\r
-                       if jjj<startFile+step\r
+                       if jjj == 1\r
                                [pk,lk] = findpeaks(-IntensitiesAverFin{jjj}(1:(LevelPixels+30)));  %10\r
-                               [Height(1,jjj),pkH]=max(pk);\r
+                               [Height(jjj),pkH]=max(pk);\r
                                qH=lk(pkH);\r
-                               Metr_fit_H(1,jjj)=polyval(polypar_Metr,qH);\r
+                               Metr_fit_H(jjj)=polyval(polypar_Metr,qH);\r
                                plot(ax, qH, -Height(jjj), 'or', 'linewidth', 2)\r
-                       elseif jjj>=startFile+step\r
+                       else\r
                                if waytrend<=0;\r
                                        [pk,lk] = findpeaks(-IntensitiesAverFin_2{jjj}(1:(LevelPixels+30)));  %10\r
                                else\r
                                        [pk,lk] = findpeaks(IntensitiesAverFin_2{jjj}(1:(LevelPixels+30)));  %10\r
                                end\r
-                               [Height(1,jjj),pkH]=max(pk);\r
+                               [Height(jjj),pkH]=max(pk);\r
                                if max(pk)>=10;                                                 % error cleaning %30\r
                                        qH=lk(pkH);\r
-                                       Metr_fit_H(1,jjj)=polyval(polypar_Metr,qH);\r
+                                       Metr_fit_H(jjj)=polyval(polypar_Metr,qH);\r
                                end\r
                                plot(ax, qH, Height(jjj), 'om', 'linewidth', 2)\r
                        end\r
 \r
                elseif D_num==2\r
                        LevelPixels=MeterScale(1);                 % x level in pixels in the original image\r
-                       if jjj<startFile+step\r
+                       if jjj == 1\r
                                [pk,lk] = findpeaks(-IntensitiesAverFin{jjj}(LevelPixels:end));  %10\r
-                               [Height(1,jjj),pkH]=max(pk);\r
+                               [Height(jjj),pkH]=max(pk);\r
                                qH=LevelPixels+lk(pkH);\r
-                               Metr_fit_H(1,jjj)=polyval(polypar_Metr,qH);\r
+                               Metr_fit_H(jjj)=polyval(polypar_Metr,qH);\r
                                plot(ax, qH, -Height(jjj), 'or', 'linewidth', 2)\r
-                       elseif jjj>=startFile+step\r
+                       else\r
                                if waytrend<=0;\r
                                        [pk,lk] = findpeaks(-IntensitiesAverFin_2{jjj}(LevelPixels:end));  %10\r
                                else\r
                                        [pk,lk] = findpeaks(IntensitiesAverFin_2{jjj}(LevelPixels:end));  %10\r
                                end\r
-                               [Height(1,jjj),pkH]=max(pk);\r
+                               [Height(jjj),pkH]=max(pk);\r
                                qH=LevelPixels+lk(pkH);\r
-                               Metr_fit_H(1,jjj)=polyval(polypar_Metr,qH);\r
+                               Metr_fit_H(jjj)=polyval(polypar_Metr,qH);\r
                                if max(pk)<30;                                                 % error cleaning %30\r
                                        qH=NaN;\r
-                                       Metr_fit_H(1,jjj)=NaN;\r
+                                       Metr_fit_H(jjj)=NaN;\r
                                end\r
                                plot(ax, qH, Height(jjj), 'or', 'linewidth', 2)\r
                        end\r
                end\r
 \r
-               if jjj<startFile+step\r
+               if jjj == 1\r
                        [pk2,lk2] = findpeaks(-IntensitiesAverFin{jjj},'MinPeakProminence',5);                         % Small peaks at the bubble/liquid interface\r
 \r
                        [pk3,lk3] = findpeaks(-IntensitiesAverFin{jjj},'MinPeakProminence',5,'MinPeakDistance',30);    % Throw out small random peaks in the liquid, peaks far apart cca 1cm\r
@@ -177,15 +180,15 @@ for iii=1:1:nSelectedDirectory  % Cycles for directories with files
                        % % plot(lk2,abs(pk2),'om','linewidth',2)\r
                        hold on\r
 \r
-                       [Bottom(1,jjj),pk2B]=max(abs(pk2));        % For 1-4 files\r
+                       [Bottom(jjj),pk2B]=max(abs(pk2));        % For 1-4 files\r
                        qB=lk2(pk2B);                             % For 1-4 files\r
 \r
-                       Metr_fit_B(1,jjj)=polyval(polypar_Metr,qB);\r
-                       if Metr_fit_B(1,jjj)>=(Metr_fit_H(1,jjj)-2)                                 % Throw out the bubble/liquid interface if it is above the surface, 2cm 2D interface\r
-                               Metr_fit_B(1,jjj)=NaN;\r
+                       Metr_fit_B(jjj)=polyval(polypar_Metr,qB);\r
+                       if Metr_fit_B(jjj)>=(Metr_fit_H(jjj)-2)                                 % Throw out the bubble/liquid interface if it is above the surface, 2cm 2D interface\r
+                               Metr_fit_B(jjj)=NaN;\r
                                qB=NaN;\r
-                       elseif Bottom(1,jjj)<=(max(abs(pk))+min(abs(pk)))*0.62                     % 0.65 is an estimate of how much intensity the bubbles need\r
-                               Metr_fit_B(1,jjj)=NaN;                                                % For 1-4 files\r
+                       elseif Bottom(jjj)<=(max(abs(pk))+min(abs(pk)))*0.62                     % 0.65 is an estimate of how much intensity the bubbles need\r
+                               Metr_fit_B(jjj)=NaN;                                                % For 1-4 files\r
                                qB=NaN;\r
                        end\r
                        plot(ax, qB, Bottom(jjj), 'ob', 'linewidth', 2)\r
@@ -197,12 +200,12 @@ for iii=1:1:nSelectedDirectory  % Cycles for directories with files
                                else\r
                                        [pk2,lk2] = findpeaks(IntensitiesAverFin_2{jjj}(LevelPixels:end));  %10\r
                                end\r
-                               [Bottom(1,jjj),pk2B]=max(pk2);\r
+                               [Bottom(jjj),pk2B]=max(pk2);\r
                                qB=LevelPixels+lk2(pk2B);\r
-                               Metr_fit_B(1,jjj)=polyval(polypar_Metr,qB);\r
+                               Metr_fit_B(jjj)=polyval(polypar_Metr,qB);\r
                                if max(pk2)<=45;                                                            % error cleaning\r
                                        qB=NaN;\r
-                                       Metr_fit_B(1,jjj)=NaN;\r
+                                       Metr_fit_B(jjj)=NaN;\r
                                end\r
                                plot(ax, qB, Bottom(jjj), 'oc', 'linewidth', 2)\r
                        elseif D_num==2\r
@@ -212,32 +215,28 @@ for iii=1:1:nSelectedDirectory  % Cycles for directories with files
                                else\r
                                        [pk2,lk2] = findpeaks(IntensitiesAverFin_2{jjj}(LevelPixels:end));  %10\r
                                end\r
-                               [Bottom(1,jjj),pk2B]=max(pk2);\r
+                               [Bottom(jjj),pk2B]=max(pk2);\r
                                qB=LevelPixels+lk2(pk2B);\r
-                               Metr_fit_B(1,jjj)=polyval(polypar_Metr,qB);\r
+                               Metr_fit_B(jjj)=polyval(polypar_Metr,qB);\r
                                if max(pk2)<=20;                                                          % error cleaning\r
                                        qB=NaN;\r
-                                       Metr_fit_B(1,jjj)=NaN;\r
+                                       Metr_fit_B(jjj)=NaN;\r
                                end\r
                                plot(ax, qB, Bottom(jjj), 'oc', 'linewidth', 2)\r
                        end\r
                end\r
 \r
                writematrix(["ImageName" "Date" "Time [s]" "Intensities Height [-]" "Intensities Bottom [-]" "Height [cm]" "Bottom [cm]" "Level [cm]"], ResFile, "Sheet", SelectedDirectory{iii}, "Range", "A1:H1");\r
-               writematrix([ImageName string(Date(1,jjj)) seconds(Time(1,jjj)) Height(1,jjj) Bottom(1,jjj) Metr_fit_H(1,jjj) Metr_fit_B(1,jjj) LevelNum], ResFile, "Sheet", SelectedDirectory{iii}, "Range", ['A' num2str(jjj+1) ':H' num2str(jjj+1)]);\r
+               writematrix([ImageName string(Date(jjj)) seconds(Time(jjj)) Height(jjj) Bottom(jjj) Metr_fit_H(jjj) Metr_fit_B(jjj) LevelNum], ResFile, "Sheet", SelectedDirectory{iii}, "Range", ['A' num2str(file_ind+1) ':H' num2str(file_ind+1)]);\r
 \r
-               clear Figure\r
-               clear ContrastFigure\r
-               clear ContrastFigureFin\r
-               % clear IntensitiesAverFin\r
        end  % jjj, Cycles for figures files\r
 \r
        hf4=figure ('Name','Velocity','NumberTitle','off','PaperSize',[8.5 6],'PaperUnits','centimeters');\r
-       hp1=plot(seconds(Time(startFile:step:end)), Metr_fit_H(startFile:step:nFFiles),'-or','linewidth',2); %    [1 startFile:step:nFFiles]\r
+       hp1=plot(seconds(Time), Metr_fit_H,'-or','linewidth',2); %    [1 startFile:step:nFFiles]\r
        hold on\r
-       hp2=plot(seconds(Time(startFile:step:end)), Metr_fit_B(startFile:step:nFFiles),'-ob','linewidth',2);\r
+       hp2=plot(seconds(Time), Metr_fit_B,'-ob','linewidth',2);\r
        hold on\r
-       hp3=plot(seconds(Time(startFile:step:end)),LevelNum*ones(size(Time(startFile:step:end))),'-og','linewidth',2);\r
+       hp3=plot(seconds(Time),LevelNum*ones(size(Time)),'-og','linewidth',2);\r
 \r
        xlabel('time [s]','FontWeight','bold');\r
        ylabel('position [cm]','FontWeight','bold');\r