2016-06-04 3 views
0

Ich schrieb dies für Schleife, um etwas zu tun, und ich bin sicher, die Größe dieses Ergebnis Array ist gleich 30, aber ich weiß nicht, warum dieser Fehler über die Mismatch-Dimension angezeigt wird !Subskribierte Zuordnung Dimension in Matlab nicht mit True-Index

for rno=1:30 
    PersonNumber = outputtrainingdata(rno); 
    RealOutput = finaloutputforeachrow(rno,PersonNumber); 
    if round(RealOutput) == 1 
     result(rno) = 'True'; % Error in this line 
     %result = 'True' 
     TrueTrainingcounter = TrueTrainingcounter+1; 
    else 
     result(rno) = 'False'; 
     %result = 'False' 
    end 

end 

Antwort

0

Sie versuchen die Zeichenfolge'True' (Länge = 4) zu result(rno) (Länge = 1) zugewiesen werden. Analog versuchen Sie, die Zeichenfolge'False' (Länge = 5) zu result(rno) (Länge = 1) zuzuweisen. Aus diesem Grund erhalten Sie einen Fehler bei der Dimensionsabweichung. Wenn Sie möchten, dass result diese Zeichenfolgen tatsächlich enthält, sollten Sie ein Zellenfeld verwenden.

result = cell(1, 30); 

Und dann zuweisen {}

result{rno} = 'True'; 

Ein viel besseren Ansatz ist die logischen Werte true und false anstatt die Saiten 'True' und 'False' zu verwenden. Weil length(true) == 1, werden wir nicht länger eine Dimensionsabweichung erhalten.

+0

Aber was ist die Beziehung zwischen der Größe von wahr/falsch (Wert) mit der Größe des Ergebnisses (RNO) (Es ist leer Array beim ersten Mal)? Ich verstehe das nicht! –

+0

@SamahAhmed 'length (Ergebnis (rno))' ist immer 1. Sie können es selbst überprüfen. – Suever

+0

Ich habe die logischen Werte verwendet und es ist jetzt OK, Danke. –

Verwandte Themen