首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MATLAB中数字的负值

MATLAB中数字的负值
EN

Stack Overflow用户
提问于 2014-11-08 00:59:46
回答 2查看 250关注 0票数 2

我必须在MATLAB中做一个函数,当输入给定时,输出将是该数字的负数。我写的代码:

代码语言:javascript
复制
function [p] = negative(q)
% given an input , output will be negative of that input

w = subtract(0,1) ; 
[p] = multiply(q,w) ;
end

我为function subtract编写的代码是:

代码语言:javascript
复制
function [m] = subtract(n,s)
m = n ;
while s
[m]= decrement(m) ;
s = decrement(s) ;
end
end

乘法的代码是:

代码语言:javascript
复制
function [a] = multiply(x,y)
a = x ;
y = decrement(y) ;
while y
[a]= addition(a,x);
y = decrement(y);
end
end

加法函数:

代码语言:javascript
复制
 function [a] = addition(b,c)
 % adds b and c 
 a = b ;
 while c
 [a] = increment(a) ; 
  c = decrement(c) ;
 end
 end

函数增量代码:

代码语言:javascript
复制
 function out = increment(in)
 out = in + 1;
 end

函数递减如下:

代码语言:javascript
复制
function out = decrement(in)
 out = in - 1;
end

我为负函数编写的代码应该会根据我的情况工作,因为我将输入乘以-1。但是在MATLAB命令窗口中,当我写负片(Input)时,什么也没有打印出来(除了w= -1)。为什么会这样?我该如何修复它?我不允许使用包括(+,-,*,/,<,>,==)在内的任何操作,也不允许我使用for循环。我唯一能使用的就是赋值(=)和while循环。

EN

回答 2

Stack Overflow用户

发布于 2014-11-08 01:16:37

首先,我不明白为什么你要为一行问题写50行代码。out = -1 .* input;

然而,您的问题在于:

代码语言:javascript
复制
function [a] = multiply(x,y)
a = x ;
y = decrement(y) ; % --------------!!!
while y
[a]= addition(a,x);
y = decrement(y);  % --------------!!!
end
end

当y为负值时,循环会不断递减它,因此,它永远不会离开循环。

无论何时在负数(Q)中输入正数Q,Y都将为负数。

票数 2
EN

Stack Overflow用户

发布于 2014-11-08 02:14:11

如前所述,您在使用additionsubtractmultiply时遇到了一些问题,所以我尽量避免使用它们。

试试这个,

代码语言:javascript
复制
function [p] = negative(q)
a = q;
b = q;
a = increment(a);
b = decrement(b);
while b && a
    a = decrement(a);
    b = increment(b);
end
while a
    q = increment(q);
    a = increment(a);
end
while b
    q = decrement(q);
    b = decrement(b);
end
p = q;
end

其思想是定义两个变量,a,bq相同,然后增加一个,同时减少另一个,

因此,在第一次循环之后,ab中的一个将是0,另一个将是2xq(没有无限循环!)。

然后,我们可以很容易地使用另一个循环来获得-q,因为我们有2xq

它似乎工作得很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26806262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档