免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 9065 | 回复: 45
打印 上一主题 下一主题

现在觉得算法代码很难写 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-17 21:22 |只看该作者 |倒序浏览
目前研究图像处理算法,今天刚把一个函数的几个版本合并成一个,第二天实验的时候,又分裂出来一个版本。

大神们,你们在算法的设计阶段,不能保证设计能够达到预期目标的时候,是怎么规划代码的?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2012-04-17 21:29 |只看该作者
不玩算法

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
3 [报告]
发表于 2012-04-17 21:33 |只看该作者
回复 1# reiase


    用脚本语言……

论坛徽章:
0
4 [报告]
发表于 2012-04-17 21:58 |只看该作者
回复 3# starwing83


    脚本处理图像、操作像素不是很合适....

论坛徽章:
0
5 [报告]
发表于 2012-04-17 22:13 |只看该作者
啥意思,为什么多个版本要合成一个版本,一个版本又要分出多个版本?
来龙去脉讲明白

论坛徽章:
0
6 [报告]
发表于 2012-04-17 22:19 |只看该作者
回复 5# 家住马戏团

你突然发现,一个函数(算法)很难同时在两个场景里都达到最有效过。为了试验,就只好把算法对第二种场景再实现一下。不过也就在前一个实现上改改。等试验完,再想办法把两个函数合并。

虽然也可以在一个函数上加条件分支来试验,不过分支看起来流程不清晰,而且会影响性能。
   

论坛徽章:
0
7 [报告]
发表于 2012-04-17 22:26 |只看该作者
reiase 发表于 2012-04-17 22:19
回复 5# 家住马戏团

你突然发现,一个函数(算法)很难同时在两个场景里都达到最有效过。为了试验,就只 ...


既然很难再两个场景都达到最优效果,又不愿意加条件判断,这两个函数如何合并?

论坛徽章:
0
8 [报告]
发表于 2012-04-17 22:35 |只看该作者
回复 7# 家住马戏团


重写函数的逻辑流程,比如
版本1:
block A
block B

call C

版本2:
block A
block D

call E

因为版本2是试验用的,万一不行还要删掉。如果发现试验成功,就改写逻辑流程
版本 3
block A

if ...
    block B
    call C
else
    block D
    call E

如果不先分裂一下,先改成版本3,发现不行还得再苦逼的改回去。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:56:11
9 [报告]
发表于 2012-04-17 22:50 |只看该作者
matlab寫啊

论坛徽章:
0
10 [报告]
发表于 2012-04-17 22:58 |只看该作者
c语言,只能这么办吧
如果是C++ 我能想到
伪代码:
动态
class base
{
public:
    virtual void decode()
    {
        block A;
    }
};
class arithmeticB : public base
{
public:
    virtual void decode()
    {
        base::decode();
        blockB;
        Call C;
    }
};

class arithmeticC : public base
{
public:
    virtual void decode()
    {
        base::decode();
        blockD;
        Call E;
    }
};
静态
const int arithmeticB = 1;
const int arithmeticC = 2;
template<int N> struct Decode
{
    static void proc()
    {
    }
};
template<> struct Decode<arithmeticB >
{
    static void proc()
    {
         blockA;
         blockB;
         Call C;
    }
};
template<> struct Decode<arithmeticC >
{
    static void proc()
    {
         blockA;
         blockD;
         Call E;
    }
};
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP