2013-07-17 4 views
0

Я использую NCSOStools для некоммутативных вычислений в MATLAB. Я создаю матрицу, которую я хочу экспортировать и сохранять в файл Excel. Вот мой код:Экспорт не числовых данных (NCpoly) в MATLAB

clear all 

clc 

syms x 

NCvars x 

A=[x 2x 3x] 

Обычно я мог бы использовать команду xlswrite(filename,A) и сохранить матрицу A в файл Excel, но вместо этого я получаю сообщение об ошибке:

Input data must be a numeric, cell, or logical array. 

Есть просто сохранить макрос NCpolyA в Excel? Я не знаю, можно ли вообще изменить тип данных, чтобы он соответствовал команде xlswrite. Огромное спасибо.

ответ

0

Я пытался сохранить массив символов, и она работала:

a = ['a', ' ','b'] 
xlswrite (test.xls, a) 

может быть, xlswrite не поддерживает символические переменные.

+0

Я думаю, мне нужно изменить тип класса из NCpoly на char в этом случае, но функция char не делает этого. – Edison

+0

Пожалуйста, проверьте это: http://stackoverflow.com/questions/14378708/matlab-write-string-into-excel – User1551892

0

Ваша матрица A - symbolic, так как вы определили x. Вам необходимо назначить определенное значение для A, прежде чем передать его xlswrite. Это может быть достигнуто либо путем замены x конкретным значением с использованием subs, либо не определяющим A как символическое в первую очередь.

В качестве обходного пути, вы можете использовать char для преобразования символьных выражений в строку следующим образом:

C = cell(size(A)); 
for k = 1:numel(A) 
    C{k} = char(A(k)); 
end 

Для входа A = [x, 2 * x, 3 * x] вы должны получить C = {'x', '2*x', '3*x'}. Если вы хотите удалить звездочки (*), вы можете использовать strrep:

C = strrep(C, '*', ''); 

Вы можете передать массив ячеек строк C в xlswrite.

+0

Собственно, после некоторых манипуляций моя матрица A является числовой, поэтому я получаю что-то вроде: A = [1 2 3], но MATLAB по-прежнему рассматривает тип класса как NCpoly. Таким образом, единственный способ экспортировать эти данные - вызвать его в окне команд и вручную скопировать и вставить в Excel. Тем не менее, матрицы, с которыми я работаю, составляют тысячи строк, поэтому это не очень эффективный метод. – Edison

+0

@Edison Я отвечаю только на основании того, что я вижу в фрагменте кода в вопросе. Если вы расскажете больше о том, что вы сделали, я, возможно, смогу пересмотреть свой ответ. –

+0

Основываясь на том, что я написал в моем первоначальном вопросе, знаете ли вы, можно ли преобразовать «х» в символическом формате в строку? – Edison