使用fprintf时出错函数未定义为' sym'输入(关于"解决"和" fprintf")

时间:2015-08-29 14:56:33

标签: matlab printf

以下是我们的代码:

syms M_e
solve('9.5=0.58*(((1+(0.155*M_e^2))^3.73)/M_e',M_e);
fprintf('text %d .\n',M_e);

当我运行它时,我们收到以下错误:

>> SM_Projekt_29

ans =

3.5712628547590099257134566797414

Error using fprintf
Function is not defined for 'sym' inputs.


Error in SM_Projekt_29 (line 34)
fprintf('text %d .\n',M_e);

如何解决此错误?是否发生错误是因为它没有继续使用求解的值M_e进行计算?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您正试图在fprintf变量上使用sym,这是不允许的。 fprintf用于数字(单值,矩阵,向量)或字符数组/字符串。尝试将sym类型变量转换为double,然后显示它。另外,将说明符更改为%f,而不是%d,因为我非常怀疑您的答案是浮点数。

此外,您尚未将solve的输出分配给任何内容。确保在运行代码之前执行此操作:

syms M_e;
val = solve('9.5=0.58*(((1+(0.155*M_e^2))^3.73)/M_e)',M_e); %// Change
fprintf('text %f .\n',double(val)); %// Change

运行更正后的代码,我明白了:

val =

    3.5713

如果您想显示更多有效数字,请在显示答案前尝试使用format long g;

>> format long g;
>> val

val =

          3.57126285475901