Matlab에서 방정식을 파생하고 단순화하여이를 C++ 프로그램에서 사용하려고합니다. Matlab은 힘을 사용하는 것을 좋아하지만, ^
부호가 있지만 C++은 그것을 1 비트 좋아하지 않습니다. Matlab에 방정식을 다시 써서 C++ 친화적 방정식을 출력하도록하려면 어떻게해야합니까?C++에서 사용하기 위해 matlab에서 방정식을 다시 작성하는 방법
답변
방정식이 너무 길어서 손으로 직접 가고 싶지 않다면 방정식을 다시 포맷하여 C++과 친숙하게 만들 수있는 방법 중 하나는 방정식에 대한 MATLAB 코드의 텍스트를 구문 분석하는 것입니다 MATLAB의 REGEXPREP 함수. 당신은 당신의 MATLAB 식의 코드를 가지고 eqStr
변수 첫번째 문자열에 넣어해야
eqStr = 'the text of your equation code'; %# Put your equation in a string
expr = '(\w+)\.?\^(\d+)'; %# The pattern to match
repStr = 'pow($1,$2)'; %# The replacement string
newStr = regexprep(eqStr,expr,repStr); %# The new equation string
: 여기 pow(x,2)
또는 pow(y,3)
와 형태 x^2
또는 y.^3
의 표현을 대체 할 수있는 방법의 예입니다. 그러면 REGEXPREP의 출력이 새로운 C++ 친화적 인 수식 newStr
의 텍스트가됩니다.
x*x
또는 y*y*y
의 결과를 얻으려면 dynamic operators을 사용하여 교체 문자열을 변경할 수도 있습니다. 예를 들어 :
eqStr = 'the text of your equation code'; %# Put your equation in a string
expr = '(\w+)\.?\^(\d+)'; %# The pattern to match
repStr = '${repmat([$1,''*''],1,$2-''0''-1)}$1'; %# The replacement string
newStr = regexprep(eqStr,expr,repStr); %# The new equation string
-이 빠른 알고리즘을 사용하기위한^2,3 등
matlab에 같은 구문 (나는 방법을 모르는를 사용하는 matlab에 복제 Octave 있습니다방금 몇 초 전에 테스트했습니다. 정수로만 오버로드 된 버전을 사용했는데 단순히 x * x를 사용하면 정수 pow() 함수보다 20 배 빠릅니다. 방정식은 문자 그대로 전체 8.5x11 용지입니다. 나는 손으로 그것을하고 있기 때문에 그들의 고양이가 whout 그것을 다시 작성 MATLAB 명령을 빨아 줄 알고 싶어요. – 17mm
함수 호출에서 작은 오버 헤드가있을 수 있습니다. 두 번째 인수가 'int'로 선언 되었습니까? 값 2로 double을 전달하면 충분하지 않습니까? 릴리스 빌드를 사용하고 있습니까? –
아니요, 단순히 디버그 모드로 실행되는 타이머를 사용하고 있습니다. matlab에 일부 C++ 친숙한 코드를 출력 할 수있는 방법이 없습니까? – 17mm
접근 방법은 C 코드에 상징적 인 표현을 변환 CCODE의 MATLAB 함수를 사용하는 것입니다. 예를 들어 ccode(sym('(x+y)^2'))
은 t0 = pow(x+y,2.0);
을 반환합니다. 물론 C++ 프로그램에서 using namespace std
을 잊어 버리거나 (pow
을 std::pow
으로 바꾸십시오) 그렇지 않으면 컴파일되지 않습니다. ccode에 대한 자세한 내용은 MATLAB 도움말을 참조하십시오.
- 1. MATLAB에서 지수 방정식을 풀어 냄
- 2. MATLAB에서 ROI 사용하기
- 3. ALL을 다시 작성하는 방법?
- 4. URL 다시 작성하는 방법
- 5. URL을 다시 작성하는 방법
- 6. 데이터베이스를 다시 작성하는 방법
- 7. 여러 도메인에서 사용하기 위해 링크를 작성하는 올바른 방법
- 8. C에서 로그 파일을 작성하는 방법
- 9. C에서 bresenham 알고리즘을 작성하는 방법 #?
- 10. 부동 소수점 방정식을 다시 적용
- 11. 이 방정식을 푸는 방법?
- 12. 파일에서 BST를 다시 작성하는 방법
- 13. 긴 쿼리를 다시 작성하는 방법?
- 14. MEF에게 개체를 다시 작성하는 방법
- 15. jboss에서 URL을 다시 작성하는 방법
- 16. MATLAB을 사용하여 미분 방정식을 푸는 방법
- 17. C에서 영숫자 4x3 키패드로 코드 작성하는 방법
- 18. 이 방정식을 그릴 방법
- 19. MATLAB에서 여러 변수를 사용하여 조각 방정식을 수행하는 방법은 무엇입니까?
- 20. matlab에서 다 변수 최적화를위한 Newton의 방법
- 21. C에서 mysql 데이터베이스를 안전하게 작성하는 방법
- 22. CoreData 모델 다이어그램을 다시 작성하는 방법
- 23. LINQ에서 C# foreach를 다시 작성하는 방법
- 24. 메이플 내가이 방정식을 해결하기 위해 노력하고
- 25. 방정식을 줄이기 위해 프로그램을 작성 하시겠습니까?
- 26. shutil.copytree에서 무시를 위해 콜백 함수를 작성하는 방법
- 27. antlr로 다시 작성하는 URL
- 28. XML에서 C# 클래스를 다시 작성하는 방법
- 29. 레일이 오래된 경로 map.connect를 다시 작성하는 방법?
- 30. 다음 mysql 쿼리를 다시 작성하는 방법
완벽! 이것이 내가 바라는 바로 그 것이다. 솔직히 말해서, 나는 matlab에이 기능을 사용하기 쉽게 직접 구현 한 것이 없다는 사실에 조금 놀랐다. 많은 사람들이 나와 함께 작업을 유도하고 MATLAB에서 방정식을 단순화 한 다음 C++ 프로그램에 구현합니다 (대부분 대수 MATLAB 방정식을 수정하지 않고 코드에 붙여 넣을 수는 있지만 대부분이 경우에는 그렇지 않습니다) . 고마워요, 당신은 저에게 수 시간의 작업을 저장했습니다! – 17mm
@ 17mm : 기꺼이 도와주세요. 단 하나의 머리 위로 ... 위의 예제는'(x + y)^2'와 일치하지 않을 것입니다. 그들은 단일 변수를 하나의 힘과 일치시킬 것입니다. 다른 경우에도 작동하도록 일치 식을 수정해야하므로 더 복잡해질 수 있습니다. – gnovice
@niels : 편집이 아마도 독립 실행 형 답변으로 제공되기 때문에 거부되었습니다. 위에서 제시 한 해결책에 대한 별도의 접근 방법이며 사용자에게 별도로 투표 할 기회를 제공하는 것이 좋습니다. – gnovice