2016-11-16 4 views
0

m 파일을 실행할 때 Matlab R2015a의 작업 공간에 정의 된 변수를 사용하여 내장 함수를 재정의하는 방법을 알고 싶습니다.Matlab : 작업 공간에서 변수를 사용하여 내장 함수를 재정의하는 방법

function test 
fun1 
clear input 
load test 
plot(input) 
return 

function fun1 
input=1:10; 
save('test.mat','input') 
return 

을 내가 테스트를 실행 한 후 내가 얻을 : 나는 정의하면

는 말은 매트랩의 내장 함수로 입력을 취하고있다

Error using input 
Not enough input arguments. 

Error in test (line 8) 
plot(input) 

.

변수 이름을 변경하지 않고이를 해결하는 방법을 알고 계십니까?

감사합니다.

+0

당신은 내장 함수를 덮어해서는 안됩니다. (이런 종류의 에러를 피하기 위해) – obchardon

+0

그러나 내장 함수의 정확한 이름과 같은 변수 나 새로운 .m 파일을 생성하면이 내장 함수는 "덮어 쓰기"됩니다. – obchardon

+0

@ obchardon 나는 동의하지 않는다. 예를 들어 커스텀 클래스 ('plus() '등등)에 대해 연산자를 오버로딩하는 경우와 같이, 무엇을하고 있는지를 아는 경우에는 아무런 문제가 없습니다. MATLAB은 필요할 때 원본 버전을 호출하기 위해 [builtin'] (https://www.mathworks.com/help/matlab/ref/builtin.html) 함수 ("_Execute 내장 함수에서 오버로드 된 메소드 _")를 제공하기도합니다 . || cardogar -로드를 사용하여 "변수를 존재하게 만드는"나쁜 습관입니다. 훨씬 더 나은 접근법은'A = load (...); var = A.someName'을 사용하면 mlint와 인간 모두를 혼란에 빠뜨릴 수 있습니다. –

답변

0

이 솔루션은 코멘트에 주어진를 @로 데브 위원장

존재로 변수를 생성하지 않는 것이 좋습니다 작업 공간의 변수.

그래서 이것은 간단한 예 작업에 이상 할 것 :

A=load('test.mat'); 
input=A.input 
0

확장명을 포함하여 정확한 파일 이름을 지정하십시오. 그리고 더 나은 입력을 받아 들일 변수를 사용하십시오.

function test 
    fun1 
    clear input 
    data=load('test.mat'); 
    plot(data.input) 
    return 
end 
function fun1 
    input=1:10; 
    save('test.mat','input') 
    return 
end 

그리고 당신은 동일한 데이터 구조를 사용하려는 경우 사용할 수 있습니다

data.input=1:10; 
save('test.mat','-struct','data')