Как найти упрощенную версию этого скрипта, чтобы несколько раз использовать его для других данных?

Как я могу преобразовать этот скрипт в функцию MATLAB?

clc;
clear all;

%# part 1

set1 = {'AA00XY_2','BB74XY_2','CC92XZ_2','FF03VV_2'};
set2 = {'AA00XY_1','BB74XY_1','CC92XZ_1','FF03VV_1'};

matrices = cell(1,16);  %# An empty cell array
fileString = 'C:\Users\Documents\MATLAB\matrice_';  

    fileData = load([fileString set1{1} '.mat']);  %# Load file
    matrices{1} = fileData.(['m_' set1{1}]);       %# Get matrix

    fileData = load([fileString set1{2} '.mat']);  %# Load file
    matrices{2} = fileData.(['m_' set1{2}]);       %# Get matrix

    fileData = load([fileString set1{3} '.mat']);  %# Load file
    matrices{3} = fileData.(['m_' set1{3}]);       %# Get matrix

    fileData = load([fileString set1{4} '.mat']);  %# Load file
    matrices{4} = fileData.(['m_' set1{4}]);       %# Get matrix

      fileData = load([fileString set2{1} '.mat']);  %# Load file
      matrices{5} = fileData.(['m_' set2{1}]);       %# Get matrix

      fileData = load([fileString set2{2} '.mat']);  %# Load file
      matrices{6} = fileData.(['m_' set2{2}]);       %# Get matrix

      fileData = load([fileString set2{3} '.mat']);  %# Load file
      matrices{7} = fileData.(['m_' set2{3}]);       %# Get matrix

      fileData = load([fileString set2{4} '.mat']);  %# Load file
      matrices{8} = fileData.(['m_' set2{4}]);       %# Get matrix

      fileData = load('C:\Users\Documents\MATLAB\matrice_initial_2.mat');  %# Load file

      matrices{9} = fileData.A;
      matrices{10} = fileData.B;
      matrices{11} = fileData.C;
      matrices{12}(1)=0;
      matrices{13}(1)=0;
      matrices{14}(1)=0;

      matrices{15} = fileData.D;
      matrices{16} = 0;

     [A,B,C,D] =    A002A_1_Filtre(matrices{:});

        fileName = 'C:\Users\Documents\MATLAB\matrice_A002A_2.mat';  %# Save file name
        save(fileName,'A','B','C','D');                  %# Save the data

clc;
clear all;

%# part 2

set1 = {'AA00XY_2','BB74XY_2','CC92XZ_2','FF03VV_2'};
set2 = {'AA00XY_2','BB74XY_2','CC92XZ_2','FF03VV_2'};

matrices = cell(1,16);  %# An empty cell array
fileString = 'C:\Users\Documents\MATLAB\matrice_';  

    fileData = load([fileString set1{1} '.mat']);  %# Load file
    matrices{1} = fileData.(['m_' set1{1}]);       %# Get matrix

    fileData = load([fileString set1{2} '.mat']);  %# Load file
    matrices{2} = fileData.(['m_' set1{2}]);       %# Get matrix

    fileData = load([fileString set1{3} '.mat']);  %# Load file
    matrices{3} = fileData.(['m_' set1{3}]);       %# Get matrix

    fileData = load([fileString set1{4} '.mat']);  %# Load file
    matrices{4} = fileData.(['m_' set1{4}]);       %# Get matrix

      fileData = load([fileString set2{1} '.mat']);  %# Load file
      matrices{5} = fileData.(['m_' set2{1}]);       %# Get matrix

      fileData = load([fileString set2{2} '.mat']);  %# Load file
      matrices{6} = fileData.(['m_' set2{2}]);       %# Get matrix

      fileData = load([fileString set2{3} '.mat']);  %# Load file
      matrices{7} = fileData.(['m_' set2{3}]);       %# Get matrix

      fileData = load([fileString set2{4} '.mat']);  %# Load file
      matrices{8} = fileData.(['m_' set2{4}]);       %# Get matrix

      fileData = load('C:\Users\Documents\MATLAB\matrice_initial_2.mat');  %# Load file

      matrices{9} = fileData.A;
      matrices{10} = fileData.B;
      matrices{11} = fileData.C;
      matrices{15} = fileData.D;

      fileData = load('C:\Users\Documents\MATLAB\matrice_A002A_2.mat');  %# Load file

      matrices{12}=fileData.A;
      matrices{13}=fileData.B;
      matrices{14}=fileData.C;

      matrices{16} = fileData.D;

     [A,B,C,D] = A002A_2_Filtre(matrices{:});

        fileName = 'C:\Users\Documents\MATLAB\matrice_A002A_2.mat';  %# Save file name
        save(fileName,'A','B','C','D');                  %# Save the data*


clc;
clear all;

%# part 3


set1 = {'AA00XY_2','BB74XY_2','CC92XZ_2','FF03VV_2'};
set2 = {'AA00XY_3','BB74XY_3','CC92XZ_3','FF03VV_3'};



matrices = cell(1,16);  %# An empty cell array
fileString = 'C:\Users\Documents\MATLAB\matrice_';  %# First part   of                                  
                                                       %#   file name


fileData = load([fileString set1{1} '.mat']);  %# Load file
matrices{1} = fileData.(['m_' set1{1}]);       %# Get matrix

fileData = load([fileString set1{2} '.mat']);  %# Load file
matrices{2} = fileData.(['m_' set1{2}]);       %# Get matrix

fileData = load([fileString set1{3} '.mat']);  %# Load file
matrices{3} = fileData.(['m_' set1{3}]);       %# Get matrix

fileData = load([fileString set1{4} '.mat']);  %# Load file
matrices{4} = fileData.(['m_' set1{4}]);       %# Get matrix


fileData = load([fileString set2{1} '.mat']);  %# Load file
matrices{5} = fileData.(['m_' set2{1}]);       %# Get matrix

fileData = load([fileString set2{2} '.mat']);  %# Load file
matrices{6} = fileData.(['m_' set2{2}]);       %# Get matrix

fileData = load([fileString set2{3} '.mat']);  %# Load file
matrices{7} = fileData.(['m_' set2{3}]);       %# Get matrix

fileData = load([fileString set2{4} '.mat']);  %# Load file
matrices{8} = fileData.(['m_' set2{4}]);       %# Get matrix


fileData = load('C:\Users\Documents\MATLAB\matrice_initial_2.mat');  %# Load file

matrices{9} = fileData.A;
matrices{10} = fileData.B;
matrices{11} = fileData.C;
matrices{15} = fileData.D;

fileData = load('C:\Users\Documents\MATLAB\matrice_A002A_2.mat');  %# Load file

matrices{12}=fileData.A;
matrices{13}=fileData.B;
matrices{14}=fileData.C;

matrices{16} = fileData.D;


[A,B,C,D] = A002A_3_Filtre(matrices{:});

  fileName = 'C:\Users\Documents\MATLAB\matrice_A002A_2.mat';  %# Save file name
  save(fileName,'A','B','C','D');                  %# Save the data



clc;
clear all;
%# part 4

set1 = {'AA00XY_2','BB74XY_2','CC92XZ_2','FF03VV_2'};
set2 = {'AA00XY_4','BB74XY_4','CC92XZ_4','FF03VV_4'};



matrices = cell(1,16);  %# An empty cell array
fileString = 'C:\Users\Documents\MATLAB\matrice_';  %# First part  of                                  
                                                       %#   file name


fileData = load([fileString set1{1} '.mat']);  %# Load file
matrices{1} = fileData.(['m_' set1{1}]);       %# Get matrix

fileData = load([fileString set1{2} '.mat']);  %# Load file
matrices{2} = fileData.(['m_' set1{2}]);       %# Get matrix

fileData = load([fileString set1{3} '.mat']);  %# Load file
matrices{3} = fileData.(['m_' set1{3}]);       %# Get matrix

fileData = load([fileString set1{4} '.mat']);  %# Load file
matrices{4} = fileData.(['m_' set1{4}]);       %# Get matrix


fileData = load([fileString set2{1} '.mat']);  %# Load file
matrices{5} = fileData.(['m_' set2{1}]);       %# Get matrix

fileData = load([fileString set2{2} '.mat']);  %# Load file
matrices{6} = fileData.(['m_' set2{2}]);       %# Get matrix

fileData = load([fileString set2{3} '.mat']);  %# Load file
matrices{7} = fileData.(['m_' set2{3}]);       %# Get matrix

fileData = load([fileString set2{4} '.mat']);  %# Load file
matrices{8} = fileData.(['m_' set2{4}]);       %# Get matrix


fileData = load('C:\Users\Documents\MATLAB\matrice_initial_2.mat');  %# Load file

matrices{9} = fileData.A;
matrices{10} = fileData.B;
matrices{11} = fileData.C;
matrices{15} = fileData.D;

fileData = load('C:\Users\Documents\MATLAB\matrice_A002A_2.mat');  %# Load file

matrices{12}=fileData.A;
matrices{13}=fileData.B;
matrices{14}=fileData.C;

matrices{16} = fileData.D;


[A,B,C,D] = A002A_4_Filtre(matrices{:});

  fileName = 'C:\Users\Documents\MATLAB\matrice_A002A_2.mat';  %# Save file name
  save(fileName,'A','B','C','D');                  %# Save the data

На самом деле я делаю обработку больших файлов данных, затем, чтобы избежать ошибки "недостаточно памяти", я разбиваю каждый файл на 4 части и использую в начале каждого этапа "очистить все". Итак, я хочу иметь функцию

A002A_2 = function(AA00XY,BB74XY,CC92XZ,FF03VV,initial_2,A002A_1_Filtre,A002A_2_Filtre,A002A_3_Filtre,A002A_4_Filtre)

И моя проблема в том, что я должен написать тот же сценарий для других файлов данных. Итак, есть ли способ создать функцию, в которой я могу просто изменить имена файлов AA00XY,BB74XY,CC92XZ,FF03VV,initial_2 и имя используемой функции A002A_1_Filtre,A002A_2_Filtre,A002A_3_Filtre и A002A_4_Filtre для подпроцессинга, чтобы получить их для обработки последний шаг файл "matrice_A002A_2.mat"

NB: я хочу преобразовать 4 части моего сценария в одну функцию!!!

Спасибо за помощь.

#

После ответа Натана я внес следующие изменения:

    clc;
    clear all;

    A = 0;
    B = 0;
    C = 0;
    D = 0;

    fileName = 'C:\Users\Documents\MATLAB\matrice_A002A_2.mat';  %# Save file name
    save(fileName,'A','B','C','D');                  %# Save the data

    for n=1:4
        set1 = {'AA00XY_2','BB74XY_2','CC92XZ_2','FF03VV_2'};
        set2 = {['AA00XY_' num2str(n)]  ,['BB74XY_' num2str(n)]  ,['CC92XZ_' num2str(n)]  ,['FF03VV_' num2str(n)]};


    matrices = cell(1,16);  %# An empty cell array
    fileString = 'C:\Users\Documents\MATLAB\matrice_';  %# First part of                                  
                                                               %#   file name


      fileData = load([fileString set1{1} '.mat']);  %# Load file
      matrices{1} = fileData.(['m_' set1{1}]);       %# Get matrix

      fileData = load([fileString set1{2} '.mat']);  %# Load file
      matrices{2} = fileData.(['m_' set1{2}]);       %# Get matrix

      fileData = load([fileString set1{3} '.mat']);  %# Load file
      matrices{3} = fileData.(['m_' set1{3}]);       %# Get matrix

      fileData = load([fileString set1{4} '.mat']);  %# Load file
      matrices{4} = fileData.(['m_' set1{4}]);       %# Get matrix


        fileData = load([fileString set2{1} '.mat']);  %# Load file
        matrices{5} = fileData.(['m_' set2{1}]);       %# Get matrix

        fileData = load([fileString set2{2} '.mat']);  %# Load file
        matrices{6} = fileData.(['m_' set2{2}]);       %# Get matrix

        fileData = load([fileString set2{3} '.mat']);  %# Load file
        matrices{7} = fileData.(['m_' set2{3}]);       %# Get matrix

        fileData = load([fileString set2{4} '.mat']);  %# Load file
        matrices{8} = fileData.(['m_' set2{4}]);       %# Get matrix


        fileData = load('C:\Users\Documents\MATLAB\matrice_initial_2.mat');  %# Load file

        matrices{9} = fileData.A;
        matrices{10} = fileData.B;
        matrices{11} = fileData.C;
        matrices{15} = fileData.D;

        fileData = load('C:\Users\Documents\MATLAB\matrice_A002A_2.mat');  %# Load file

        matrices{12}=fileData.A;
        matrices{13}=fileData.B;
        matrices{14}=fileData.C;

        matrices{16} = fileData.D;


       [A,B,C,D] =  eval(['A002A_' num2str(n) '_Filtre(matrices{:});']); 

        fileName = 'C:\Users\Documents\MATLAB\matrice_A002A_2.mat';  %# Save file name
        save(fileName,'A','B','C','D');                  %# Save the data

    end

1 ответ

Не углубляясь в этот длинный код, вы можете просто использовать цикл for, если единственное, что меняется, это числа в названии "множеств", так что каждый раз вы будете увеличивать число в конце каким-то образом. Просто в качестве примера:

for n=1:10
    set1 = {['AA00XY_' num2str(n+1)],['BB74XY_' num2str(n+1)],['CC92XZ_' num2str(n+1)],['FF03VV_2' num2str(n+1)[};
    set2 = {['AA00XY_' num2str(n)]  ,['BB74XY_' num2str(n)]  ,['CC92XZ_' num2str(n)]  ,['FF03VV_' num2str(n)]};
    ...
    ...
    % the rest of the code
Другие вопросы по тегам