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)
我不知道该怎么做.如果可以,请你帮助我.
你的函数返回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)