我第一次在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);"
我不知道该怎么做。如果可以,请帮助我。
答案 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