2017-12-12 1 views
1

난 다음 문자열 가지고방정식을 포함하는 문자열을 배정도 값으로 변환하려면 어떻게해야합니까?

A = 'A = cos(2*pi*f1*t) + 4*sin(2*pi*f2*t)'; 

와 변수를 정의하고 f1f2 (2 개 개의 주파수 값)과 t (시점의 벡터). A의 방정식을 배정도 값으로 변환하는 방법은 무엇입니까?

내가 시도 :

B = str2num(A); % Result is an empty matrix 

과 :

B = str2double(A); % Result is a NaN value 

과 :

B = double(A); 

하지만 행운을. 어떻게해야합니까?

+0

'f1'과't'가있는 결과는 무엇입니까? –

+1

'A'에 문자열이 있습니까? A는 벡터 또는 상징적 표현 중 하나입니다. – brainkz

+0

예를 들어 1x300과 같이 double 유형의 벡터가있을 것으로 예상합니다. 그리고 그것은 신호를 나타냅니다. 그리고 그렇습니다. 'String'및 'Style'= 'Edit'유형의 Uicontrol에서 생성 되었기 때문에 문자열이라고 확신합니다. –

답변

3

당신은 문자열과 같이이 가정 : 정의 된

str = 'A = cos(2*pi*f1*t) + 4*sin(2*pi*f2*t)'; 

그리고 당신의 변수 f1, f2t, 당신은 문자열을 평가하는 eval를 사용해야합니다 (당신은을 추가 할 수 있습니다 끝 ';')를 화면에 출력을 억제 :

eval([str ';']); 

evalisn't usually the best option가 때때로있을 수에도 주목해야한다 피할 수없는. 의도하지 않은 결과를 초래할 수 있습니다. 예를 들어 사용자가 uicontrol에 clear all을 입력하면 작업 영역이 지워집니다. 또한 실수로 변수 이름을 잘못 선택하여 sin = sin(2*pi*f*t)과 같이 입력하여 함수를 음영 처리 할 수 ​​있습니다. 즉, 일반적으로 eval이 작동하지 않아도되는 대안을 찾아야합니다.

+0

고마워요,이 함수를 알지 못해 고맙습니다. 설명! :-) –

관련 문제