2013-04-02 52 views
1

这工作如何创建三维符号张量?

A = sym('A%d%d', [2 4]) 

A = 

[ A11, A12, A13, A14] 
[ A21, A22, A23, A24] 

但是这给了错误

A = sym('A%d%d%d', [2, 4 ,6]) 
Error using sym>createCharMatrix (line 2001) 
Matrix syntax can only create vectors and 
matrices. 

Error in sym>convertCharWithOption (line 1960) 
     s = createCharMatrix(x,a); 

Error in sym>tomupad (line 1693) 
     S = convertCharWithOption(x,a); 

Error in sym (line 113) 
      S.s = tomupad(x,a); 

如何创建在MATLAB一个象征性的三维张量?

回答

3

一个可行的方法是创建一个字符串单元阵列,并将其转换为符号变量:

%// Create matrices of indices 
[k1 k2 k3] = ndgrid(1:2, 1:4, 1:6); 

%// Create a cell array of strings 
C = regexp(sprintf('A%d%d%d', [k1(:) k2(:) k3(:)]'), 'A\d{3}', 'match'); 

%// Convert strings to symbolic objects and convert back into a matrix 
A = cell2mat(cellfun(sym, reshape(C, size(k1)), 'UniformOutput', 0)); 
+0

我看到Matlab的不会让我的生活更轻松无论是。 – siamii

+0

@siamii不幸的是,'sym'最多只能创建2-D矩阵,所以需要创造性......但通常MATLAB会使编码变得非常快速和简单,不要失去希望:) –