2017-02-15 7 views
0

Я работаю над символическим набором инструментов. Попытка решить некоторые уравнения, и это длинная строка символов, таких как x = a1 + a2^3 + b0 * b1 ... до 80 000 символов (80k). Так что мне нужно было положить это в файл. mputstr() Другие функции wrting не работают, так как они являются символами. Ошибка выбрасывается как: не строка или заданный формат.Как написать символы в файл в scilab

Может ли какой-либо метод помочь сместить переменную в файл. код:

Syms aa ab ac 
    z=ab^6*ac^6*ad^3*ba^3*bg^3*bh^3+3*aa^4*ab^6*ac^6*ad^4*ba^4*bg^2*bh^2+3*aa^5*ab^6*ac^6*ad^5*ba^5*bg*bh+aa^6*ab^6*ac^6*ad^6*ba^6 

    mputstr({char(z)},fd) 
    >>error 10000 
    >>char: Wrong type for input argument: Cell expected. 
    at line  95 of function char called by : 


    mputstr(z,fd) 
    >> !--error 999 
    >mputstr: Wrong type for input argument #1: A string expected. 

    p=string(z) 

    mputstr(p,fd) 
    >>!--error 999 
    >mputstr: Wrong type for input argument #1: A string expected. 


    mfprintf("%s",z) 
    >> !--error 246 
    >>Function not defined for given argument type(s), 
     check arguments or define function %c_mfprintf for overloading. .. 
+0

Его * строка * символов? Строка - это символы ASCII, не имеет значения, какой символ она содержит. Вы уверены, что это * строка * –

+0

по строке символов, которую я имел в виду, ее длинное числовое символическое выражение apha ..: + a1 a2 a3 a4 b1 b2 b5 + 2 a1 a2 a3 a4 b1 b2 b5 + a1 a2 a3 a4 b1 b2 b5 + a1 a2 a3 a4 b1 b2 b5 –

+0

Но это тип 'char'? Потому что это строка. Можете ли вы привести пример своих данных? –

ответ

0

Допустим, у вас есть символическое уравнение х:

syms a b c 
x = a + b * c 

Здесь х обозначает символическую переменную, так что вы не можете напрямую записать его в файл. Сначала вам нужно преобразовать его в массив символов. Таким образом, вы должны использовать что-то вроде

fd = mopen(this_file, "wt"); 
mputstr(char(x), fd); 
mclose(fd); 
+0

здесь x является немного сложным термином, поэтому я преобразовал его в строку с помощью строки (x), затем попытался написать с помощью решения, которое вы дали, тогда оно показывает ошибку: CELL EXPECTED ", и даже если я прямо пытаюсь использовать его, он бросает ту же ошибку .. –

+0

Если он ожидает ячейки, тогда вы должны попробовать mputstr ({char (x)}) –

+0

В любом случае, пожалуйста, обновите свой вопрос до показать, что вы пытаетесь, а также минимальный рабочий пример. –

0

Я думаю, что ответ @ bremen_matt является хорошим, но с модификацией.

Если переменные «Симс» являются чем-то сложным, так символ() и строка() не может быть использована, почему вы не создаете свою собственную функцию преобразования?

Пожалуйста, смотрите ниже мою модификацию @bremen_matt например:

syms a b c 
x = a + b * c 

fd = mopen(this_file, "wt"); 
mputstr(syms_to_string(x), fd); 
mclose(fd); 

syms_to_string() возвращает строку информации, которую вы хотели бы напечатать символ х и тот же функция может использоваться для печати других символов (например, a). Конечно, функция syms_to_string() может быть лучше определена с использованием overloading.