24小时热门版块排行榜    

查看: 2527  |  回复: 5

abingchem

木虫 (著名写手)


[交流] 【讨论】怎么样能高效些?

有个分段函数:
            | x + y, x>=0  and y >=0
            | x^2 + y, x>=0 and y<0
f(x,y) = | x + y^2,  x <0 and y >=0
            | x^2 + y^2, x<0 and y <0
如果参数x,y只是单个值,这样用if语句就可以处理。

但如果x、y都是数组的话,怎么样处理呢?x=-10:10;y=-10:10;

如果扩展到x,y都是矩阵,有没有什么好办法?[x,y]=meshgrid([-10:0.1:10],[-10:0.1:10])

我能想到的最原始的办法是
for  ....
     for ....
     ...
     end
end
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
★ ★ ★
abingchem(金币+2):经典做法~ 2011-01-05 11:41:39
robert2020(金币+3):辛苦了! 2011-01-11 11:04:45
引用回帖:
Originally posted by abingchem at 2011-01-04 16:16:46:
有个分段函数:
            | x + y, x>=0  and y >=0
            | x^2 + y, x>=0 and y<0
f(x,y) = | x + y^2,  x <0 and y >=0
            | x^2 + y^2, x<0 and y <0
如果参 ...

不知道这样对不对,楼主验证一下,和你用循环计算的结果比较比较。
CODE:
clear
clc

fxy = @( x, y )x .* ( x >= 0 & y >= 0 ) + y .* ( x >= 0 & y >= 0 ) +...
    x .^ 2 .* ( x >= 0 & y < 0 ) + y .* ( x >= 0 & y < 0 ) + ...
    x .* ( x < 0 & y >- 0 ) + y .^ 2 .* ( x < 0 & y >- 0 ) + ...
    x .^ 2 .* ( x < 0 & y < 0 ) + y .^ 2 .* ( x < 0 & y < 0 );

%% 如果x、y都是数组的话
x = -10 : 0.1 : 10;
y = -10 : 0.1 : 10;
z1 = fxy( x, y );

figure
plot3( x, y, z1 )

%% 扩展到x,y都是矩阵
[ x, y ] = meshgrid(  -10 : 0.1 : 10, -10 : 0.1 : 10 );
z2 = fxy( x, y );

figure
surf( x, y, z2 )

2楼2011-01-04 18:03:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

abingchem

木虫 (著名写手)


引用回帖:
Originally posted by xiegangmai at 2011-01-04 18:03:53:


fxy = @( x, y )x .* ( x >= 0 & y >= 0 ) + y .* ( x >= 0 & y >= 0 ) +...
    x .^ 2 . ...

这个计算的表达式好像要进行很多次的运算,而且里面有大量是重复计算了,对吧?这样效率会高吗?如果[x,y]很大的话,时间比较长。。。

顺便问一下,MATLAB7以后用哪个函数统计浮点运算次数呢?
3楼2011-01-05 11:44:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lds588

铁杆木虫 (著名写手)


abingchem(金币+1):多谢参与~ 2011-01-05 13:36:26
学习了~~~~~
4楼2011-01-05 12:50:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
★ ★ ★
abingchem(金币+3):多谢xiegangmai 2011-01-05 13:37:08
robert2020(金币+3):辛苦了! 2011-01-11 11:04:32
引用回帖:
Originally posted by abingchem at 2011-01-05 11:44:09:


这个计算的表达式好像要进行很多次的运算,而且里面有大量是重复计算了,对吧?这样效率会高吗?如果[x,y]很大的话,时间比较长。。。

顺便问一下,MATLAB7以后用哪个函数统计浮点运算次数呢?

你用tic、toc命令测试一下,相对循环方式,当x,y越大,计算时间越省。
当x、y是单个数或一维数组时,用循环方式可能速度还快一些。

MATLAB6以后的版本中就没flops命令了,早期版本可以用flops统计浮点运算次数,而更新版本中已经不再提供该功能。

这是MATLAB帮助中的说明,我的MATLAB 2009b。
Remove all existing instances of flops. With the incorporation of LAPACK in MATLAB version 6, counting floating-point operations is no longer practical.
5楼2011-01-05 12:53:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

abingchem

木虫 (著名写手)


引用回帖:
Originally posted by xiegangmai at 2011-01-05 12:53:05:


你用tic、toc命令测试一下,相对循环方式,当x,y越大,计算时间越省。
当x、y是单个数或一维数组时,用循环方式可能速度还快一些。

MATLAB6以后的版本中就没flops命令了,早期版本可以用flops统计浮点运 ...

恩,运行结果就是这样子的。数组大一些的时候效果更好!
6楼2011-01-05 13:43:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 abingchem 的主题更新
普通表情 龙 兔 虎 猫 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 TZqyNTBa07NP 2026-11-13 3/150 2026-11-15 11:03 by xSrQNSSjcgoX
[找工作] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 TZqyNTBa07NP 2026-11-13 3/150 2026-11-15 10:30 by xSrQNSSjcgoX
[公派出国] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 TZqyNTBa07NP 2026-11-13 4/200 2026-11-15 10:08 by xSrQNSSjcgoX
[博后之家] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 SX5mJmPWDfOO 2026-11-13 3/150 2026-11-15 08:40 by xSrQNSSjcgoX
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 SX5mJmPWDfOO 2026-11-13 3/150 2026-11-15 08:18 by xSrQNSSjcgoX
[论文投稿] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +4 XJXMuRjD7cK7 2026-11-13 4/200 2026-11-15 07:01 by xSrQNSSjcgoX
[基金申请] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 XJXMuRjD7cK7 2026-11-13 3/150 2026-11-15 05:44 by xSrQNSSjcgoX
[公派出国] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 uKOSCocCb6Fm 2026-11-13 3/150 2026-11-15 04:38 by xSrQNSSjcgoX
[考研] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 uKOSCocCb6Fm 2026-11-13 3/150 2026-11-15 04:05 by xSrQNSSjcgoX
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +4 1Nb0IVlmV6v0 2026-11-11 4/200 2026-11-13 11:18 by Equinoxhua
[论文投稿] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +4 gRND4NVAZ8VG 2026-11-11 5/250 2026-11-13 11:15 by Equinoxhua
[基金申请] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +6 C6CRn66RYYXS 2026-11-10 7/350 2026-11-13 10:55 by Equinoxhua
[考博] 27博士申请 +5 白白白ly 2026-11-09 5/250 2026-11-13 05:01 by wlf1982
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +4 TgvkbZZl9tqB 2026-11-11 6/300 2026-11-12 12:42 by ECLTXnJnRSXf
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 Z7qfCsdIiD1T 2026-11-10 5/250 2026-11-12 11:25 by HajghKOMynmz
[基金申请] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +4 czAiolzR0IJC 2026-11-10 8/400 2026-11-12 11:00 by HajghKOMynmz
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 TgvkbZZl9tqB 2026-11-11 4/200 2026-11-12 08:15 by HajghKOMynmz
[考研] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 cdqGD6ftHmbl 2026-11-11 3/150 2026-11-12 07:53 by HajghKOMynmz
[公派出国] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +4 Z7qfCsdIiD1T 2026-11-10 6/300 2026-11-12 07:09 by 9fOTqj074tIg
[考研] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +5 cqv1zKnzd7hr 2026-11-09 8/400 2026-11-12 05:08 by 9fOTqj074tIg
信息提示
请填处理意见