2013-08-18 1 views
2

저는 Mathematica 프로그래밍의 초보자이며 도움이 필요합니다. 임의의 배열 요소를 가져 오는 함수를 작성하려고 노력 중이며 수학 LibreOffice에서 사용하도록 특별히 형식이 지정된 문자열을 작성합니다.배열 (Mathematica)에서 문자열을 만드는 함수

OOForm[MM_] := 
    (strMM = "left (matrix{"; 
    For[i = 1, i < Dimensions[MM][[1]], i++] { (* not last row *) 
     For[j = 1, j < Dimensions[MM][[2]], j++] { (* not last element from the row *)  
     strMM = strMM <> ToString[MM[[i, j]], InputForm] <> "#"; 
     }; (* last element from the row *) 
     strMM = strMM <> ToString[MM[[i, Dimensions[MM][[2]]]], InputForm] <> "##"; 
    }; 
    For[j = 1, j < Dimensions[MM][[2]], j++] { (* last row without the last element *) 
     strMM = strMM <> ToString[MM[[Dimensions[MM][[1]], j]], InputForm] <> "#"; 
    }; (* last element *) 
    strMM = strMM <> ToString[MM[[(Dimensions[MM][[1]]), Dimensions[MM][[2]]]], InputForm] <> "} right)"; 
strMM; 
) 

같은 입력을 : 다음

내 코드는

"left (matrix{3/2#-1#-2#-2#-2##0#3#6#10#14##-6#3/2#5#5#5##19/2#-7#-35/2#-24#-61/2} right)" 

그러나이 출력 발생 :

A = {{3/2, -1, -2, -2, -2}, {0, 3, 6, 10, 14}, {-6, 3/2, 5, 5, 5}, {19/2, -7, -35/2, -24, -61/2}}; 

예상 출력 것은

"left (matrix{-61/2#-61/2##-61/2#-61/2} right)" 

예상되는 출력이 아니지만 오류를 찾을 수 없습니다.

감사합니다.

답변

2

먼저 배열을 나타내는 문자열을 가져옵니다. 그럼

myArray = {{3/2, -1, -2, -2, -2}, {0, 3, 6, 10, 14}, {-6, 3/2, 5, 5, 5}, {19/2, -7, -35/2, -24, -61/2}}; 

myArrayString = ToString[myArray,InputForm]; 

하자)

나는 단일 문자 변수 이름을 싫어하고, 내가 정의하는 변수 이름에 대한 초기 소문자를 사용 티카 규칙을 따릅니다 및

StringReplace[myArrayString,{" " -> "", "," -> "#", "{{" -> "left (matrix{", "}}" 
-> "} right)", "}" -> "#", "{" -> ""}] 

원하는 문자열을 반환합니다. 당신은 함수가이 작업을 수행하려면

, 단지 다음과 같이 모두 함께 분쇄 :

ooForm[arr_List]:= StringReplace[ToString[arr,InputForm], 
    {" " -> "", "," -> "#", "{{" -> "left (matrix{", "}}" 
    -> "} right)", "}" -> "#", "{" -> ""}] 

당신은 매스 매 티카에 이민자에 공통 기본 오류를했다. 루프를 사용하는 것은 당신이 시간의 비효율적 인 사용을 요구하는 명령형 코드를 작성하고 있음을 보여주는 확실한 신호입니다 (필자가 작성한 코드는 작성한 코드보다 훨씬 짧고 기능이 적음). 비효율적입니다 컴퓨터 사용 시간. 후자는 물론 그다지 중요하지 않지만 관심이있는 경우 접근 방법과 내 시간을 비교하십시오.

+0

답장을 보내 주셔서 감사합니다. 그리고 여러분 말이 옳습니다. 저는 C 스타일 프로그래밍을 Mathematica에 이식하려고했습니다. :) –

관련 문제