2017-12-16 2 views
0

나는 등호를 만드는 데 사용되는 방정식을 파일에 저장하고 어떤 방정식이 어떤 파일에 속하는지 추적해야합니다. 따라서 필자는 Octave 스크립트에서 생성 한 파일에 손으로 레이블을 붙이지 않고 생성 한 파일에 레이블을 지정하려고합니다. 이 내 코드는 바로 지금입니다 :방정식을 문자열로 얻으려면 어떻게해야합니까?

clf; 

function [f, v] = doiso(dodraw) 
    m = 3; 
    dim = -m:0.1:m; 
    if (dodraw > 0) 
    dim = -m:0.6:m; 
    endif 
    [x,y,z] = meshgrid(dim, dim, dim); 
    func = cos(x) .* sin(y) + cos(y) .* sin(z) + cos(z) .* sin(x); 
    if (dodraw > 0) 
    isosurface(func, 0); 
    else 
    [f, v] = isosurface(func, 0); 
    endif 
endfunction 

#draw 
doiso(1); 
axis equal; 
title("isosurface() of the function"); 

#saveq 
[f, v] = doiso(0); 
vertface2obj(v, f, strcat("objs/", int2str(time * 1000), "out.obj")); 

저장된 파일이 긴 숫자는 타임 스탬프와 죄와 COS를 포함하는 표현이다 cos(x) . sin(y) + cos(y) . sin(z) + cos(z) . sin(x) 1513441860368.obj 같은 이름을 가지고 있어야 코드에서와 같은 파일을 (생산 방정식). 잘못된 문자는 파일 이름 문자열에서 제거되거나 대체되어야합니다.

온라인 리소스에는 방정식 인쇄가 언급되어 있지 않습니다. 숫자 만 인쇄하거나 방정식을 푸십시오. 이 작업을 수행 할 수

+0

어쩌면 유효하지 않은 문자를 대체 할 수 있습니까? 요점은 Octave가 방정식의 문자열 표현을 전혀 갖지 못하게한다는 것입니다. – douira

+2

파일 이름으로 수식을 저장하는 것은 좋지 않은 생각이며 수식을 사용하여 저장된 파일에 문자열을 추가하는 것이 좋습니다. – Andy

+0

Andy가 말한 내용. 또는 더 나은 방법은 함수에 방정식을 연결하는 것입니다. 프로그래밍 방식으로 참조 할 수있는 외부 테이블을 만들면됩니다. 예 : 'Equations.f1 = "cos (x)"; Equations.f2 = "죄 (x)"; 등. –

답변

0

한 가지 방법은 func2str()을 사용하고 있습니다 :

func2str (fcn_handle)

반환 함수가 참조하는 함수의 이름을 포함하는 문자열이 fcn_handle을 처리합니다.

방정식에 익명의 함수를 만들어야합니다. 당신이 볼 수 있듯이 예를 들어,

> f = @(x,y,z) cos(x) .* sin(y) + cos(y) .* sin(z) + cos(z) .* sin(x); 
> eqn = func2str(f); 
> fprintf(stdout, '%s\n', eqn) 
@(x, y, z) cos (x) .* sin (y) + cos (y) .* sin (z) + cos (z) .* sin (x) 

은, 위의 코드는 함수 f의 표현을 포함하는 문자열 eqn을 만듭니다. 그런 다음 문자열을 조작하여 좀 더 합리적인 파일 이름을 얻을 수 있습니다. 다음은 간단한 예제이다

여기 strjoin(strsplit(str), '')
> fname = regexprep(strjoin(strsplit(eqn(11:end)), ''), '[().*+]', '_') 
fname = cos_x___sin_y__cos_y___sin_z__cos_z___sin_x_ 

문자열 str에서 모든 공백을 제거합니다. regexprep() 함수는 정규 표현식을 사용하여 "원하지 않는"문자를 밑줄로 대체합니다. *에서 _TIMES_으로 변경하거나 원하는 것을 변경하는 등보다 정교한 조작이 가능합니다. 문자열 조작에 대한 추가 정보 here.

+0

이것은 내가 뭘 찾고 있었는지, 고마워. – douira

관련 문제