在MATLAB中使用函数时出错

MSD*_*MSD -1 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);
Run Code Online (Sandbox Code Playgroud)

主要计划是

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
Run Code Online (Sandbox Code Playgroud)

我想要精确生成许多值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);"
Run Code Online (Sandbox Code Playgroud)

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

nkj*_*kjt 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
Run Code Online (Sandbox Code Playgroud)