Angenommen habe ich die folgenden zwei Variablen:Effiziente Doppelpunkt-Operator für mehr Start- und Endpunkte
start_idx = [1 4 7];
end_idx = [2 6 15];
ich will effizient (keine for-Schleife, wenn möglich) erzeugt eine einzelne Zeile, die von dem Doppelpunkt-Operator besteht zwischen entsprechenden Elementen von und end_idx
angewendet werden. In diesem Beispiel würde dies in:
result = [1:2 4:6 7:15];
Deshalb:
results = [1 2 4 5 6 7 8 9 10 11 12 13 14 15];
Die Methode, dies zu tun, sollte in Simulink der MATLAB Funktionsblock verwendbar sein. Vielen Dank!
out = cell2mat (arrayfun (@ (x, y) [x: y], start_idx, end_idx, 'uniformoutput', false)) '' – BillBokeey
Ist arrayfun schneller als eine for-Schleife? –
Nicht wirklich. Wie groß sind deine Vektoren 'sart_idx' und' end_idx'? Ich glaube, sie müssen ziemlich groß sein, damit dieser Code die Geschwindigkeit Ihres Codes nicht negativ beeinflusst – BillBokeey