코딩

카테고리: 원하는 부분만 골라! 골라!

순서: 남들이 많이 봤던 내용들만 먼저! 먼저!

키워드 검색: 원하는 내용만 뽑아! 뽑아!

MATLAB_ADVANCED_1_15강 질문

MATLAB
작성자
Godjunpyo (관리자)
작성일
2021-10-21 01:02
조회
292
안녕하세요

이번에 MATLAB_ADVANCED_1_15강을 수강하는 도중에 질문이 생겨서 글 올립니다.

 

강의중 한가지 색만을 표현하는 flat방식과 다른 방식으로 여러 색을 조각면에 표현하는 방식을 배우는 과정(p475)에서

---------------------------------------------------------------------------------------------------

clear, clc ,close all

peaks(20) 

axis off

h = findobj('Type','surface');

set(h,'facecolor',[0.5 0.5 0.5],'EdgeColor',[0.5 0.5 0.5])

x= [3 -3 3];

y= [-3 3 -3];

z= [8 8 8];

cols = [ 1 1 1; 1 1 0; 0 1 0];

for i = length(x)

    light('pos',[x(i), y(i), z(i)],'color',cols(i,:))

    

end

-----------------------------------------------------------------------------------------------------

for문이 이해가 되지 않습니다.

 

이전에는 예를들어 for i = 0:10과 같은 '실행하는 범위'를 입력하여

그 범위내에서 순차적으로 시행되는 형식으로 활용 하였는데

 

이번에는 i를 벡터x의 가장 큰 배열 차원의 길이인 3으로 지정한 상태로 돌리는 과정에, i가 1,2,3순서로 진행되는 것인지 궁금해서

다음과 같이 작성 해 보니

----------------------------------------------------------------------------------------------------

clear, clc ,close all

peaks(20) %mesh가 20개로 됨

axis off

h = findobj('Type','surface');

set(h,'facecolor',[0.5 0.5 0.5],'EdgeColor',[0.5 0.5 0.5])

x= [3 -3 3];

y= [-3 3 -3];

z= [8 8 8];

cols = [ 1 1 1; 1 1 0; 0 1 0];

​ 

light('pos',[x(3), y(3), z(3)],'color',cols(3,:))​

------------------------------------------------------------------------------------------------------

for 문의 형식에서 i가 3일때 값들만 light형식에 같은 형식으로 넣어봤더니

맨 위에 작성했던 결과와 같은 색의 그래프가 나왔습니다.

 

 

for i = length(x)에서

i = 3일때만 출력이 되는것인지 궁금합니다.(i=1,i=2일때의 색들의 겹쳐지지 않는지)

그렇다면

length(x)대신에 3을 넣었어도 되는 것인지도 궁금합니다.

 



 

#권준표 #매트랩 #for문 #매트랩질문
전체 1

  • 2021-10-21 01:08

    for i=1:length(x)
    인데 1부터라는 말을 안 쓰셔서 green color만 나온 것입니다.

    cols = [1 1 1; 1 1 0; 0 1 0];
    을 차례대로 반영해주기 위해서는
    for문에서 i값을 1부터 차례대로 넣어줘야 하고
    그러면 위와 같은 그림으로 잘 나올 겁니다.

    Screen-Shot-2021-10-20-at-6.08.22-PM.png