배열의 순서 :변경 인덱스 나는 다음과 같은 구조의 구조체 <code>mpc</code>이
num type col3 col4 ...
mpc.bus = 1 2 ... ...
2 2 ... ...
3 1 ... ...
4 3 ... ...
5 1 ... ...
10 2 ... ...
99 1 ... ...
to from col3 col4 ...
mpc.branch = 1 2 ... ...
1 3 ... ...
2 4 ... ...
10 5 ... ...
10 99 ... ...
내가해야 할 것은 : 1 : 다시 순서와 같은 유형의 모든 행이 mpc.bus
의 행 1
이 먼저 이어지며, 2
이 뒤 따르고, 마지막으로 3
이 뒤 따른다. 유형이 3
인 요소가 하나 뿐이며 다른 유형 (4/5
등)은 없습니다.
2 : 1
3에서 시작 번호 (mpc.bus
의 1 열에 연속을 확인하십시오.받는 사람-에서 mpc.bus
의 새로운 번호에 해당하는 mpc.branch
의 열,
4 : 시뮬레이션을 실행 한 후, 같은 순서로 상기와 같이 번호와 설정하는 위의 단계를 역
find
를 사용하여 mpc.bus
를 업데이트하기 쉽습니다
type_1 = find(mpc.bus(:,2) == 1);
type_2 = find(mpc.bus(:,2) == 2);
type_3 = find(mpc.bus(:,2) == 3);
mpc.bus(:,:) = mpc.bus([type1; type2; type3],:);
mpc.bus(:,1) = 1:nb % Where nb is the number of rows of mpc.bus
mpc.branch
의 to/from 열의 숫자는 mpc.bus
의 1 열의 숫자와 일치합니다.
to
, from
열의 숫자를 mpc.branch
으로 업데이트해도됩니다.
그러나 나는 걷잡을 수없는 방법으로 내 발걸음을 되돌릴 수 없습니다. 몇 가지 간단한 명령을 사용하여 번호 매기기를 업데이트 할 수 있습니까?
기록 : mpc.branch의 번호를 다시 매기는 코드를 의도적으로 포함하지 않았습니다. 누군가가 똑똑하고 간단한 솔루션을 가지고 있기 때문에 (시뮬레이션이 끝나면 다시 실행하기가 더 쉬울 것입니다).
편집 : (구조체와 woriking 피하기 위해) 정상 배열을 생성하는 것이 더 쉬울 수 있습니다
bus = mpc.bus;
branch = mpc.branch;
편집 # 2 : 일의 순서 :
다시 - 순서와 재 번호.
bus
및branch
의 열 (3 : 끝)이 변경됩니다. (이 질문에 포함되지 않음)원래의 순서와 색인을 복원하십시오.
고마워요!
감사합니다. 나는 이것이 효과가있을 것이라고 생각한다! 'sortrows '대신에'find'를 사용하는 이유는 실제로 배열하기 때문에'2 1 3'이 아니라'1 2 3' (그 부분은 쉽게 고칠 수 있습니다) 때문입니다. 루프를 피하기를 바랬지 만,이 경우에는 어려울 것이라고 생각합니다. 다시 한 번 감사드립니다. (영리한 "빠른 수정"이있는 경우를 대비하여 조금 더 열어 두겠습니다. 내일 답장을 수락하겠습니다.)) –
@ 잭 : 덜 루프/루프 - 무료 아이디어와 함께 올라 오면, 내 대답을 편집합니다. – Schorsch