2014-05-23 1 views
0

Как преобразовать этот скрипт в функцию 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 
+0

Можете уточнить? Преобразование скрипта в функцию - очень простой акт в Matlab, поэтому я не думаю, что это все, с чем вы столкнулись. Но у меня проблемы с расшифровкой того, с чем вам сложно. – TTT

+0

моя проблема в том, что мне приходится писать один и тот же сценарий сто раз, и каждый раз, когда я включаю новые данные (AA00XY ',' BB74XY ',' CC92XZ ',' FF03VV - массивы новых данных). A002A_2 - это просто имя, присвоенное окончательному результату. Поэтому я хочу, чтобы более разумный способ не переписывать одну и ту же программу. – bzak

+0

initial_2 - результат, полученный ранее. – bzak

ответ

1

не углубляясь в этот длинный код, вы можете просто использовать для цикла, если единственное, что изменение числа в имя «наборы», поэтому каждый раз, когда вы увеличиваете число в конце в некотором роде. Только в качестве примера:

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 

 Смежные вопросы

  • Нет связанных вопросов^_^