フィルターのクリア

How to make a symbolic matrix?

1 回表示 (過去 30 日間)
Evgheny
Evgheny 2011 年 4 月 11 日
I need to make a symbolic matrix:
1 t1 t1^2 sin(t1) cos(t1)
1 t2 t2^2 sin(t2) cos(t2)
....
1 tm tm^2 sin(tm) cos(tm)
I could make an array of array but not a whole matrix:
# phi.m file
function[result] = phi(t)
% declaring omega
omega = 4;
result = [1 t t*t sin(omega*t) cos(omega*t)];
# main.m file
n=8;
m=5;
t = sym('t',[n,1]);
F = diag(sym('t',[1 m]));
for i=1:n
F(i,:) = phi(t(i));
end
F
and this returns:
[ 1, t1, t1^2, sin(4*t1), cos(4*t1)]
[ 1, t2, t2^2, sin(4*t2), cos(4*t2)]
[ 1, t3, t3^2, sin(4*t3), cos(4*t3)]
[ 1, t4, t4^2, sin(4*t4), cos(4*t4)]
[ 1, t5, t5^2, sin(4*t5), cos(4*t5)]
[ 1, t6, t6^2, sin(4*t6), cos(4*t6)]
[ 1, t7, t7^2, sin(4*t7), cos(4*t7)]
[ 1, t8, t8^2, sin(4*t8), cos(4*t8)]
But it is array of arrays (but I need matrix). How to do this?

採用された回答

Walter Roberson
Walter Roberson 2011 年 4 月 11 日
What data class does it think that F is?
cell2mat might work.

その他の回答 (2 件)

Andrei Bobrov
Andrei Bobrov 2011 年 4 月 11 日
variant:
>>n=8;t=[];for j=1:n, t = [t;sym(['t' num2str(j)])]; end
phi=@(k,omega)[ones(length(k(:)),1) k k.^2 sin(omega*k) cos(omega*k)];
phi(t,4)
ans*ones(size(ans,2),1)
ans =
[ 1, t1, t1^2, sin(4*t1), cos(4*t1)]
[ 1, t2, t2^2, sin(4*t2), cos(4*t2)]
[ 1, t3, t3^2, sin(4*t3), cos(4*t3)]
[ 1, t4, t4^2, sin(4*t4), cos(4*t4)]
[ 1, t5, t5^2, sin(4*t5), cos(4*t5)]
[ 1, t6, t6^2, sin(4*t6), cos(4*t6)]
[ 1, t7, t7^2, sin(4*t7), cos(4*t7)]
[ 1, t8, t8^2, sin(4*t8), cos(4*t8)]
ans =
t1 + cos(4*t1) + sin(4*t1) + t1^2 + 1
t2 + cos(4*t2) + sin(4*t2) + t2^2 + 1
t3 + cos(4*t3) + sin(4*t3) + t3^2 + 1
t4 + cos(4*t4) + sin(4*t4) + t4^2 + 1
t5 + cos(4*t5) + sin(4*t5) + t5^2 + 1
t6 + cos(4*t6) + sin(4*t6) + t6^2 + 1
t7 + cos(4*t7) + sin(4*t7) + t7^2 + 1
t8 + cos(4*t8) + sin(4*t8) + t8^2 + 1

Evgheny
Evgheny 2011 年 4 月 11 日
I'm sorry but in such a way - it calculates too (like a matrix).
  1 件のコメント
Walter Roberson
Walter Roberson 2011 年 4 月 11 日
The interface between MATLAB and MuPad often converts matrix operations in to element-wise operations. To have a MATLAB-level matrix treated as an algebraic matrix in MuPad, you need to be more careful about how you code the problem.
Unfortunately I do not have the symbolic toolbox myself, so I cannot experiment with how you can best do this coding.
What *might* work for matrix multiplication, A * B, with A and B already defined as matrices, is to code
subs('A * B')
instead of using A * B . But I'm not at all certain of this: without the toolbox to play with, it is more difficult to tell which parts of the documentation apply to which circumstances.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLinear Algebra についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by