2016-02-25 2 views
0

У меня есть этот массив ячеекMATLAB - Невозможно создать символические переменные через петлю массива

MatrixF = 

{3x1 cell} {3x1 cell} 

MatrixF{1} 

ans = 

'f1' 
'f2 ' 
'f3 ' 

MatrixF{2} 

ans = 

'x1' 
'x2 ' 
'x3 ' 

И я хочу, чтобы преобразовать каждый элемент в массиве MatrixF в символической переменной. Я думал, что этот цикл будет делать

[a, b] = size(MatrixF); 
for i=1:b; 
    [c,d] = size(MatrixF{i}); 
    for j=1:c; 
     sym(MatrixF{i}{j}); 
    end; 
end; 

Но вместо этого, единственный выход, который я получаю переменная ANS, которая является массив 1x1. Почему ans объявляется как sym, а не отдельные переменные сами, которые вызываются и доступны?

ответ

2

ans объявляется как sym, потому что sym function требует явного выходного аргумента для генерации символьной переменной. Это поведение отличается от syms function, которое использует семантику command form для выведения переменной в существующую.

Таким образом, вы можете сделать следующее:

[a, b] = size(MatrixF); 
for i=1:b 
    [c,d] = size(MatrixF{i}); 
    for j=1:c 
     MatrixF{i}{j} = sym(MatrixF{i}{j}); 
    end 
end 

Хотя, я предложил бы делать гораздо чище (и, возможно, быстрее):

>> x = sym('x',[3,1]) 
x = 
x1 
x2 
x3 

>> f = sym('f',[3,1]) 
f = 
f1 
f2 
f3 
Смежные вопросы