2014-01-12 5 views
2

의 상징적 인 배열 나는 다음과 같은 코드를 가지고 : 나는 나에게 각 반복에 대한 [0 x 0] 같은 배열을주고 싶어숫자 배열의 곱셈과 matlab에

a=zeros(1,3); 
syms x 
y=zeros(1,3); 
for j = 1:3 
    a = [zeros(1,j-1) 1 zeros(1,3-j)]; 
    y(1,j)=x*a(1,j); 
    display(y(1,j)); 
end; 

합니다. 하지만 반대로 다음과 같은 오류가 발생합니다.

The following error occurred converting from sym to double: 
Error using mupadmex 
Error in MuPAD command: DOUBLE cannot convert the input expression into a double array. 

If the input expression contains a symbolic variable, use the VPA function instead. 

Error in 
Untitled123 (line 6) 
y(1,j)=x*a(1,j); 

의견이 있으십니까?

답변

2

문제는 y을 숫자 형 (부동 소수점) 배열로 할당했지만 기호화 된 배열이 아닙니다. a은 숫자이지만, x을 곱하면 그 결과는 기호가됩니다. x은 기호 값이 아닌 기호 변수이기 때문에 Matlab은 자동 형변환을 배정도로 수행 할 수 없습니다. 이 같은 y 할당 할 수 있습니다 :

y = sym(zeros(1,3)); 
+0

죄송합니다 친구를, 그러나 위 제공 한 힌트는, 내가 [0 X 0]과 같은 배열을 갖고 싶어 말했다 내 problem.As를 해결할 수있는 x는 첫 번째 반복 [x 0 0], 두 번째 반복 [0 x 0], 세 번째 반복 [0 0 x]에서 각 반복에서 기호 변수입니다. –

+0

@MRMeyqani : 가능합니다. 이것은'for' 루프의 부분이 아니라'y' (코드의 세 번째 줄) 할당입니다. 제 대답을주의 깊게 읽으십시오. – horchler

+0

알았어, 알았다. 루프 부분에 대한 제안 사항이 있습니까? –