MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   求助:一个避免使用for循环的问题 (https://www.labfans.com/bbs/showthread.php?t=3753)

etoxp 2008-06-28 20:06

求助:一个避免使用for循环的问题
 
==============报歉先前没有把我想要解决的问题说清楚,现在重新修改一下===============

function main
A=[-1 -2;3 4];
B=f(A)------>此句欲得到B=[-1 -1;1 1],
然而结果却是
>> main
B =
1
说白了就是,子程序中"if x<0 及y=-1,y=1"这些语句,都是对一个1*1的矩阵进行判断或赋值的,而不是对含有多个元素的矩阵。所以"B=f(A)"没有得到我想要的结果。
当然可以用for循环的方式,遍历A中每个元素,逐一调用f()来实现。
但我想避免使用for循环,而用简短高效的代码实现,可以怎么做呢???谢谢!

function y=f(x)
if x<0
y=-1;
else
y=1;
end



==============先前的提问===============
A=[1 2;3 4];
欲调用子程序f(),使A中每个元素都加1,怎么用简单的代码实现呢?
不用for循环,不修改子程序f()
我开始想就这样做:B=f(A),但程序报错通不过


function y=f(x)
y=x+1;

watcher 2008-06-28 23:54

估计LZ提供的子函数不是你实际使用的子函数吧,因为按上面的子函数写法,通过B=f(A)调用是可行的。

fanxing39 2008-06-29 02:32

[SIZE="4"]不用调子程序,直接 A+1 行不? [/SIZE] :lovely:

watcher 2008-06-29 16:30

[QUOTE=etoxp;13237]==============报歉先前没有把我想要解决的问题说清楚,现在重新修改一下===============

function main
A=[-1 -2;3 4];
B=f(A)------>此句欲得到B=[-1 -1;1 1],
然而结果却是
>> main
...[/QUOTE]

if语句对向量无效,但是比较符号对向量有效,LZ的问题可以这样解决:
function y=f(x)
y=-(x<0)+(x>=0);

未注册 2008-06-30 13:16

[QUOTE=etoxp;13237]==============报歉先前没有把我想要解决的问题说清楚,现在重新修改一下===============

function main
A=[-1 -2;3 4];
B=f(A)------>此句欲得到B=[-1 -1;1 1],
然而结果却是
>> main
...[/QUOTE]

后面那个问题,没有问题
function main
A=[1,2;3,4];
B=f(A);

function y=f(x)
y = x + 1;
可以的。


所有时间均为北京时间。现在的时间是 12:02

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.