2017-06-26 2 views
0

Ich habe zwei Matrizen: finalEnergy{1,j}(i) und finalZC{1,j}(i). Die finalEnergy{1,1}(i) hat 1 x 611 Elemente und finalZC{1,1}(i) hat 595 Elemente. Ich muss finalZC{1,1}(i) auffüllen, um 611 Elemente zu haben. wie man die Größe jeder Zelle von finalZC{i,j} auf die Größe von Zellen in finalEnergy{i,j} aufträgt. Mein Code ist untenWie Nullen in Matrix in Matlab pad

for j=1:length(finalEnergy) 
    for i=1:length(finalEnergy{1,j}) 
    if(length(finalEnergy{1,j})<length(finalZC{1,j})) 

     lenFE=length(finalZC{1,j})-length(finalEnergy{1,j}); 

     finalEnergy{1,j})(i)=padarray(finalEnergy,lenFE,padding); 
    end 
    end 
end 
+0

Sind das immer die Größen? Wenn ja, warum hast du die "if" Aussage? Oder können die Größen manchmal anders sein? –

+0

es hat nicht immer die gleiche Größe.Es variiert wie j ändert –

Antwort

0

Sie haben ein paar Fehler und Implementierungsfehler in der Schleife, aber die Idee ist richtig. Sie brauchen hier keine Schleife über i, wenn ich Sie richtig verstehe.

for j=1:size(finalEnergy, 2) 
    if(numel(finalEnergy{1, j})>numel(finalZC{1, j})) 
     lenFE=length(finalEnergy{1, j})-length(finalZC{1, j}); 
     finalZC{1, j}=padarray(finalZC{1, j},[0 lenFE/2], 0); 
    end 
end 

Es muss einen effizienteren Weg geben, dies zu tun. Dies setzt auch voraus, dass lenFE immer eine gerade Zahl ist, was in Ihrem Fall richtig ist. Ich könnte diese Antwort später bearbeiten, um eine allgemeinere Lösung zu setzen.

+0

finalEnergy {i, j} bleibt immer als finalEnergy {1, j} weil wir nur eine Zeile verwendet haben. In finalEnergy {1, j} (i) i ist 1 * irgendeine Zeilenmatrix in finalEnergy {1, j}. Wie könnte ich Mat-Datei zum besseren Verständnis senden –

+0

Ok Ich glaube, ich verstehe dich besser jetzt, sehen Sie die aktualisierte Antwort –