필터 지우기
필터 지우기

Creating symbolic function with array for argument

조회 수: 1 (최근 30일)
Benoit Cabot
Benoit Cabot 2024년 3월 8일
댓글: Benoit Cabot 2024년 3월 8일
Hi,
I am trying to understand how to use mutli dimension array with symbolic function. I am not sure why I get an error for the symolic function when the input argument is two dimension.
x = sym ('x', [2 1]);
y = sym( 'y', [1 2]);
z = sym( 'z', [2 5]);
f(x,y,z)=(x(1,1)+y(1,1)+z(1,1));
Error using sym/cat>checkDimensions
CAT arguments dimensions not consistent.

Error in sym/cat>catMany (line 33)
[resz, ranges] = checkDimensions(sz,dim);

Error in sym/cat (line 25)
ySym = catMany(dim, args);

Error in sym/horzcat (line 19)
ySym = cat(2,args{:});

Error in indexing (line 1033)
C = symfun(sym(R),[inds{:}]);
if I change the variable to
x = sym ('x', [1 1]);
y = sym( 'y', [1 2]);
z = sym( 'z', [1 5]);
f(x,y,z)=(x(1,1)+y(1,1)+z(1,1));
it works fine, I am not sure I understand why
  댓글 수: 6
VBBV
VBBV 2024년 3월 8일
symfun operates using scalars more efficiently. The function f has three independent variables, x y and z . So, the function needs inputs to three variables
x = sym ('x');
y = sym( 'y');
z = sym( 'z');
f(x,y,z)=symfun(x+y+z,[x,y,z])
f(x, y, z) = 
X=[1 ; 1];
Y=[1 1];
Z=[1 2 3 4 5; 6 7 8 9 0];
f(X(1,1),Y(1,1),Z(1,1)) + f(X(2,1),Y(1,1),Z(1,1)) + f(X(1,1),Y(1,1),Z(1,1)) + f(X(1,1),Y(1,2),Z(1,1)) + ...
f(X(1,1),Y(1,1),Z(1,1)) + f(X(1,1),Y(1,1),Z(2,5))
ans = 
17
Benoit Cabot
Benoit Cabot 2024년 3월 8일
thank you

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
Walter Roberson 2024년 3월 8일
You cannot create symfun that expect non-scalars as parameters.
symfun takes all of the provided parameters, horzcat()'s them together, and creates individual parameters for the results.
x = sym ('x', [1 2]);
y = sym ('y', [1 2]);
f(x, y) = x(1) + x(2) + y(1) + y(2)
f(x1, x2, y1, y2) = 
Notice that it has become a function of four parameters.
x = sym ('x', [2 1]);
y = sym ('y', [2 1]);
f(x, y) = x(1) + x(2) + y(1) + y(2)
Error using symfun.validateArgNames
Second argument must be a scalar or vector of unique symbolic variables.

Error in symfun (line 102)
y.vars = symfun.validateArgNames(inputs);

Error in indexing (line 1033)
C = symfun(sym(R),[inds{:}]);
Notice the only difference here is the orientation of x and y, but it just fails.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Symbolic Variables, Expressions, Functions, and Preferences에 대해 자세히 알아보기

제품


릴리스

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by