2017-10-17 11 views
0

Matlab에서 답을 기호 변수 형식으로 반환하려고합니다. I는 I 수신하고 에러를 설명하기 위해 다음 코드 및 기능을 만들어 :Matlab 함수의 답을 Symbol 형식으로 반환하는 방법

clc 
clear all 
syms L real; 
% L = 1 % The code works when I uncomment this line 
k1 = [ L, -L; 
     -L, 2*L] 
k2 = [4*L^2, -L; 
     0,  L] 
K = GlobalStiffnessMatrix(k1,k2) 

M 개의 파일 GlobalStiffnessMatrix.m는 아래와 같다 :

function K = GlobalStiffnessMatrix(k12,k23) 
    K = zeros(2,2); 
    K(1,1) = k12(1,1); 
    K(1,2) = k12(1,2); 
    K(2,1) = K(1,2); 
    K(2,2) = k12(2,2) + k23(1,1); 
end 

I가 다음 오류 수신하고 :

The following error occurred converting from sym to double: Error using symengine (line 59) DOUBLE cannot convert the input expression into a double array. If the input expression contains a symbolic variable, use VPA.

함수 자체와 시뮬레이션 코드에서 VPA를 사용하려고했지만 여전히 동일한 오류가 발생합니다. 물론 라인 설정을 해제 할 때 L = 1 함수는 정상적으로 작동합니다.

이 함수가 기호 변수로 K을 반환하도록하려면 어떻게해야합니까?

+3

출력'K'를'0 '을 사용하여 이중 행렬로 초기화하고 있습니다. 그런 다음이 요소 중 하나에 기호 변수를 지정하고 형식이 일치하지 않게하려고합니다. 대신'K = sym ('K', [2,2])' – Wolfie

+0

과 같이'sym '를 사용하여 출력을 초기화하십시오! 그것을 해결해 주셔서 감사합니다! – PatStarks

+1

걱정할 필요없이 전체 답변으로 의견을 추가했습니다. 이 질문을 받아들이도록 수락하십시오. 감사 – Wolfie

답변

1

당신은

K(1,1) = k12(1,1); 

대신 사용

K = zeros(2,2); 

그런 다음 그 수치의 각 요소에 상징적 인 변수를 할당하려고 사용하여 수치 행렬을 초기화하는 것, 사용 상징적 인 2 × 2 매트릭스로 K을 초기화 sym (문서 here 참조).
K = sym('K', [2,2]); 

지금 K의 각 요소는 상징적 인 변수이며, 기존 상징적 인 변수에 각각 할당 아무런 문제가없는 것입니다.