2010-05-24 10 views
1

다음은 MATLAB 프로그램의 기본 스켈레톤입니다. 각 상자는 클래스 정의입니다.Matlab에서 정의되지 않은 변수

아래로 스크롤하여 오류를 찾습니다. alt text 참고 : 1. 각 클래스는 사용자 정의 생성자


에게 오류

Undefined function or variable 'Troom'. 

Error in ==> wall>wall.wall at 31 
     function o = wall(Tr) 

Error in ==> mainfile at 5 
     w1 = wall(); 

내가 다른 파일에서 클래스 벽의 객체를 생성 할 때이 온다있다 "mainfile


질문

  1. 왜 이런 일이 무엇입니까?
  2. Matlab에 대한 OOP의 개념이 잘못 되었습니까?
  3. 어떻게 해결할 수 있습니까?

미리 감사드립니다.


PS : 코드

function o = wall() 
     Tr = o.Troom*2; 
     o.N = round(1/o.dx) + 1; 
     o.T = Tr * ones(o.N,1); 
     o.Tinf = Tr; 
     o.update_properties(); 
    end 

코드 2

classdef wall 
properties 
    dx = 0.01; 
    dt = 0.4; 
    L = 0.16; 
    N; 
    tlimit = 1505.2; 
    sbc = 5.670400e-8 % The Stefan-Boltzmann Constant 

    a; 
    hi; % Surface Conductivity of Inner Surface 
    bi; 
    ho; % Surface Conductivity of Outer Surface 
    bo; 
    lamb; 

    Troom = 298; % Room Temperature (K) 
    Tinf; 
    T; 

    room = compartment(); 
    conc = concrete(); 
    fire = fireProperties(Troom); 

end 
+0

실제 코드가 도움이 될 것입니다. 여러분이 우리에게 주신 것으로부터 무슨 일이 일어나고 있는지 말할 수는 없습니다. – Donnie

+0

문제가 발생하는 생성자 코드를 넣었습니다. :) 희망이 도움이됩니다. 다른 클래스에는 긴 코드가있어 여기에는 적합하지 않을 수 있습니다. – OrangeRind

+0

나는 이것이 왜 일어나고 있는지 혼란 스럽다. coz. 다른 변수에 대해서는 그렇게 보이지 않습니다. – OrangeRind

답변

2
room = compartment(); 
conc = concrete(); 
fire = fireProperties(Troom); 

네 문제가 있습니다. Troom은 properties 블록의 컨텍스트에서 사용할 수 없습니다. Troom에 상수를 넣거나 이들을 속하는 생성자로 옮깁니다.

+0

완료! 큰! 고마워요! 한 가지 더 궁금한 점이 있습니다. Mathworks의 OOP 문서는 오랫동안 바람이 불고 혼란스럽게 보입니다. matlab에 비해 OOP가 더 나은 치료법이 있습니까? – OrangeRind

+1

과학 컴퓨팅을 위해 OOP를 수행하려면 Python + numpy + scipy를 사용하는 것이 최소한 * 고려해야합니다. 파이썬은 IMO Matlab보다 OOP에 훨씬 더 적합하다. –

+0

kk. 그걸 살펴볼 것입니다. Thnx! :) – OrangeRind

관련 문제