在MATLAB中使用函数时出错

时间:2013-09-02 10:09:46

标签: matlab function floating

我第一次在MATLAB中使用了一个函数。函数体正常工作。但是当从程序中调用它时会出错。

功能是:

function f = adjust(value)
if value < 0
  s = -1;
  value = -value;
else
  s = 1;
end

b = floor(value);
value = value-b;
value = s*value;

f = sprintf('%.14f', value);

主程序是

x(1) = 0.3;
y(1) = -0.4;
a = 36;
for n = 2:16 
   temp = a*(y(n-1)-x(n-1));
   x(n) = adjust(temp);
end

我想生成一些精度为1e-14.的值 当我运行程序时,我收到错误

???  In an assignment  A(I) = B, the number of elements in B and
I must be the same.

Error in ==> one at 6
    x(n) = adjust(temp);"

我不知道该怎么做。如果可以,请帮助我。

1 个答案:

答案 0 :(得分:6)

你的函数返回f作为sprintf的输出,sprintf是一个char数组。你不能把它放到x中,因为x已被定义为包含x(1)=0.3;

的双精度数

您可能希望使用sprintf将值打印到屏幕以便进行检查,但是您的函数应该返回一个数字value

ETA:正如Rody在评论中解释的那样,format可用于改变Matlab显示数字的方式,但精度不会改变。同样,sprintf可以控制格式,但不会更改值本身。在命令行中尝试以下行:

format short
value = 3.000000000012
format long
value