Info
이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
Help with compiling Matrix & Loop Function Please
조회 수: 3 (최근 30일)
이전 댓글 표시
I have split the below nodes into a number of sub elements
node1 (0 0) node2 (0 6) node3 (6 6) node4 (6 0)
element1 nodes (1 2) element2 nodes (2 3) element3 nodes (3 4) element4 nodes (2 4)
>> sub_ele_nodes
sub_ele_nodes(:,:,1) =
0 0
0 1.5000
0 3.0000
0 4.5000
0 6.0000
sub_ele_nodes(:,:,2) =
0 6.0000
1.5000 6.0000
3.0000 6.0000
4.5000 6.0000
6.0000 6.0000
sub_ele_nodes(:,:,3) =
6.0000 6.0000
6.0000 4.5000
6.0000 3.0000
6.0000 1.5000
6.0000 0
sub_ele_nodes(:,:,4) =
0 6.0000
1.5000 4.5000
3.0000 3.0000
4.5000 1.5000
6.0000 0
I now wish to compile the above in one matrix, but I may have more elements than 4 so therefore I guess I need a loop. I also do not want any of the nodes repeating each other. Result should be:
>> nodes
0 0
0 1.5000
0 3.0000
0 4.5000
0 6.0000
1.5000 6.0000
3.0000 6.0000
4.5000 6.0000
6.0000 6.0000
6.0000 4.5000
6.0000 3.0000
6.0000 1.5000
6.0000 0
1.5000 4.5000
3.0000 3.0000
4.5000 1.5000
Please can someone help?
댓글 수: 0
답변 (2개)
Amit
2014년 1월 25일
편집: Amit
2014년 1월 25일
nodes = permute(sub_ele_nodes,[1 3 2]);
nodes = reshape(nodes,[],size(sub_ele_nodes,2),1);
nodes = unique(nodes,'rows','stable');
댓글 수: 2
Amit
2014년 1월 25일
Before posting this, I tried it against the sub_ele_nodes that you provided in the question. And got exactly what you wanted.
I'd say before trying the code, try one time just typing
sub_ele_nodes
and checking if the matrix is still same.
Andrei Bobrov
2014년 1월 25일
a = num2cell(sub_ele_nodes,[1 2]);
[aa,b] = unique(cat(1,a{:}),'first','rows');
[~,ii] = sort(b);
out=aa(ii,:);
댓글 수: 1
이 질문은 마감되었습니다.
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!