2016-07-27 11 views
0

Ich habe den folgenden Arbeitscode, der die Parameteranzahl nach jeder Stunde anzeigt. Der Code verwendet zwei Funktionen. Im Grunde genommen mein Code machtMATLAB Speicherwert der Schleife in Tabellenform

  • Benutzer laufen test_main (Stunde, Gesamt Parameter)
  • test_main erzeugen Zufallszahl
  • Nummer test_main senden
  • test_sub der Anzahl

test_main Funktion test_sub antworten

function[] = test_main(x, pc) 

for i = 1:x %loop for time 
    fprintf('\n Time is %d hour after count start . \n', i); 

    for t = 1:pc 
     fprintf('\nPARAMETER at test main %d ', t); 

     w=rand; %random error generator. 
     if w<0.5 
      status=1; 
     else 
      status=99; 
     end 

    % fprintf('\n Time is %d hour after count start . \n', i); 

    test_sub(status); 
    end 
end 
end 

test_sub Funktion

function[a] = test_sub(z) 

%fprintf('\nPARAMETER inside test sub %d ', count) 
fprintf('\n Value is %d \n', z); 

    if (z==1) %if input equal to 0 
    j=1; %store temporary value to j 
    a=j; 
    disp('new value is 1') 

    elseif (z==99) 
    j=1; 
    a=j; 
    disp('new value is 100') 
else 
disp('unidentified error') 
end 
end 

Ich stelle fest, dass ich keinen Wert zurück von test_sub test_main senden haben. Ich bin nicht sicher, wie man den Wert nach jeder Schleife in Tabellenform aufzeichnet. Ich brauche die Tabelle wie folgt aussieht:

  Parameter 1 Parameter 2 ..... parameter N 
Time 1  1    100 
Time 2  100    1 
.... 
Time N 

Kann die Parameter und Zeit erweitern entsprechend dem Wert, den Benutzer Einsatz am test_main Funktion?

Antwort

0

ok ich bin nicht ganz sicher, was die Funktion macht, aber die Erstellung der gewünschten Tabelle könnte ausreichen. Ich gehe davon aus, dass x und pc nur Zahlen sind und dass Sie für jeden Parameter keinen Namen haben. Ich würde eine Zellenmatrix erstellen zuerst, dann verwandeln sie in eine Tabelle:

function [output] = test_main(x, pc) %this functions output would be the table you want 
    cell_array=cell(x,pc+1); %creating a cellarray first 
    names=cell(1,pc+1); 
    names{1,1}='Time'; 
    for i = 1:x %loop for time 
     fprintf('\n Time is %d hour after count start . \n', i); 
     cell_array{i,1}=i; 

     for t = 1:pc 
      fprintf('\nPARAMETER at test main %d ', t); 

      w=rand; %random error generator. 
      if w<0.5 
       status=1; 
      else 
       status=99; 
      end 

     % fprintf('\n Time is %d hour after count start . \n', i); 

     cell_array{i,t+1}=test_sub(status); %writing in row i at column t the value of test_sub 
     names{1,t+1}=['Parameter_' num2str(t)]; 
     end 
    end 

    output=cell2table(cell_array,'VariableNames',names); %transforming it into a table 

end 

im test_sub Sie auf beiden Fällen der schreiben, wenn ‚a = 1‘ i wie die zweite Gefühl, eine 100. Die Ausgabe sieht sein soll Wie in Ihrem Beispiel, aber die Parameternamen werden nicht in "Parameter X" geändert. Sie können das in der Tabelle cell2 tun, wenn Sie wollen

+0

Wie kann ich die Zeit neben dem cell_array anzeigen? –

+0

Ich bearbeitete meine Antwort – Finn

+0

wenn ich das cell_array ändere, ändere auch die Zeitspalte. kann es wie time_array cell_array1 cell_array2 sein? –