序言:对于laws的代码,完全从Matlab中转来。其中用到了字符串复制和对比的函数。

C++要求:

输入字符串,根据字符串,来确定选择数组,用于下一过程

MatLab代码:

(1).文件calLaws.m

function [y,h_v,h_h]=calLaws(x,id,LocalEnergy)for dim=1:2if dim==1FilterId=upper(id(1:2)); % Input argument "id" is undefined.elseFilterId=upper(id(3:4));endif strcmp(FilterId,'L5'), h(dim,1:5)=[ 1  4  6  4  1];elseif strcmp(FilterId,'E5'), h(dim,1:5)=[-1 -2  0  2  1];elseif strcmp(FilterId,'S5'), h(dim,1:5)=[-1  0  2  0 -1];elseif strcmp(FilterId,'W5'), h(dim,1:5)=[-1  2  0 -2  1];elseif strcmp(FilterId,'R5'), h(dim,1:5)=[ 1 -4  6 -4  1];elseif strcmp(FilterId,'__'), h(dim,1:5)=[ 0  0  1  0  0];endendh_v=h(1,:);h_h=h(2,:);y=filter2(h_v,filter2(h_h,x));if exist('LocalEnergy')==1 y=avgsmth(abs(y),LocalEnergy);%LocalEnergyz作为整数出现!end

(2).文件avgsmth.m

    function y=avgsmth(x,M,N)if nargin<3,%输入参数小于3N=M;endw=ones(M,1)/M;y=filter2(w,x);w=ones(1,N)/N;y=filter2(w,y);

(3).C++代码实现:使用String对象实现

void CGrayCal::calLaws(string id1,string id2)
{int numL,numR;int i,j;int k;int KerNum;i=0;j=0;k=0;numL=id1.size();numR=id2.size();  char FilterL[5];char FilterR[5];strcpy(FilterL,id1.c_str());strcpy(FilterR,id2.c_str());*///生成卷积核,利用字符串拷贝    KerNum =numL*numR;ConvKer=new ConvKernel[KerNum];//声明卷积核,内部数据结构,里面包含5*5矩阵int L5[]  = { 1 , 4,  6 , 4 , 1};int E5[]  = {-1, -2 , 0 , 2 , 1};int S5[]  = {-1 , 0,  2,  0, -1};int W5[]  = {-1 , 2 , 0 ,-2 , 1};int R5[]  = { 1, -4,  6 ,-4,  1};int __[]  = { 0 , 0 , 1 , 0,  0}; //(all pass)int TempL[5];int TempR[5];for(i=0;i<numL;++i){for(j=0;j<numR;++j){if ( id1.substr(i,1)=="L")//获得子串进行比较!!!memcpy(TempL,L5,sizeof(int)*5);if ( id1.substr(i,1)=="E")memcpy(TempL,E5,sizeof(int)*5);if ( id1.substr(i,1)=="S")memcpy(TempL,S5,sizeof(int)*5);if ( id1.substr(i,1)=="W")memcpy(TempL,W5,sizeof(int)*5);if ( id1.substr(i,1)=="R")memcpy(TempL,R5,sizeof(int)*5);if ( id2.substr(i,1)=="L")memcpy(TempR,L5,sizeof(int)*5);if ( id2.substr(i,1)=="E")memcpy(TempR,E5,sizeof(int)*5);if ( id2.substr(i,1)=="S")memcpy(TempR,S5,sizeof(int)*5);if ( id2.substr(i,1)=="W")memcpy(TempR,W5,sizeof(int)*5);if ( id2.substr(i,1)=="R")memcpy(TempR,R5,sizeof(int)*5);memcpy(ConvKer[k].vector1,TempL,sizeof(int)*5);memcpy(ConvKer[k].vector2,TempR,sizeof(int)*5);vectorPlus(TempL,TempR,ConvKer[k].ConvMat);++k;}}

此段代码实现了输入指定字符串(大写),根据字符串来确定使用所指定的数组,进行左右相乘,得到必要的卷积核。

利用string 字符串拷贝相关推荐

  1. java mysql判断字符串相等_【Java】利用String的compareTo比较两个时期字符串

    在<[Java]比对两个以字符串形式表示的时期是否相差超过1天>(点击打开链接)曾经介绍过,如果利用字符串的截取来比较两个在数据库中取出来,被特定格式化的日期.然而,这具有一定的局限性,最 ...

  2. 利用string.Spit截取到对应键查找与获得所有键string.Contains查找字符串内部是否存在对比

    同文件string.Spit截取到对应键后根据查找耗时(第一次1分30秒以上.且仅运行下图部分代码.然后弄得电脑卡死了!) 获得所有键利用string.Contains查找字符串内部是否存在耗时1分钟

  3. strlcpy和strlcat——一致的、安全的字符串拷贝和串接函数

    strlcpy 和 strlcat-- 一致的.安全的字符串拷贝和串接函数 Todd C. Miller University of Colorado, Boulder Theo de Raadt O ...

  4. thinking-in-java(13) String字符串

     [13.1]不可变String 1)String对象是不可变的,具有只读特性: [荔枝-String对象是不可变的]  public class Immutable {public static S ...

  5. Java性能优化之String字符串优化,BAT 面试官 如何面试

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. 字符 ...

  6. 【java学习】String字符串

    1,概念 1)String 不可变 不可变类:final,不可被继承. public final class String implements java.io.Serializable, Compa ...

  7. 内置对象的API Array数组对象 String字符串对象 json字符串 JSON对象 js作用域及变量预解析 引用类型与值类型区别 共享引用 基本包装类型 数组去重

    01-内置对象的API a.Date对象获取时间 b.Array对象数组加工 c.String对象字符串加工 d.json字符串的语法格式 e.JSON对象的字符串与对象转换应用 02-JS作用域 a ...

  8. linux c strdup 字符串拷贝

    #include <string.h> char *strdup(const char *s); 函数介绍: strdup()函数是c语言中常用的一种字符串拷贝库函数,一般和free()函 ...

  9. linux strcpy 用法,由Linux中管道的buffer,浅谈C语言中char类型字符串拷贝使用strcpy()和=赋值符号的区别...

    今天在写父子进程用两个单向管道通信时,出现了错误: Segmentation fault (core dumped) 打开core文件发现: 附上源码: 1 #include 2 #include 3 ...

最新文章

  1. 数字三角形,最长上升子序列,背包模型 AcWing算法提高课 (详解)
  2. JZOJ 5909. 【NOIP2018模拟10.16】跑商(paoshang)
  3. QHD DDIC is implemented via HANA
  4. el-table列宽自适应;el-table表格的列根据内容自动撑满;el-table内容换行问题;
  5. silverlight 通过WCF与LinQ对数据库进行操作1
  6. 给model模型传数组参数
  7. linux下namp简单使用
  8. 西方哲学史人物学说时间线
  9. 如何根本上解决屎山代码的问题
  10. 走楼梯(斐波那契数列)
  11. Ubuntu 20.04安装GTX 1060显卡驱动+cuda 11.4 + cudnn 8,nvidia-smi 报错:NVIDIA-SMI has failed
  12. 信息隐藏——第四章 图像信息隐藏数
  13. php在线客服:TP6+workerman实现
  14. python cnn 实例_在Keras中CNN联合LSTM进行分类实例
  15. 进大厂就一定要考研吗?答案毫无疑问是否定的
  16. esp8266-01s控制继电器开关
  17. 本特利振动传感器123617-XXX-XXX-05-02-00 MOD:159811-000-130
  18. PDF2Word v1.40 汉化版
  19. 面试复习题--音视频
  20. 从递推式到通项公式 特征方程学习笔记

热门文章

  1. “互联网+”下的制造业供应链新挑战
  2. CSS :hover 选择器
  3. php进程SIGBUS,SIGSEGV错误
  4. HBase(五):HBase基本API操作之CRUD
  5. pgsql自动安装shell脚本整理
  6. nodejs---常用npm命令
  7. 数据库备份还原顺序关系(环境:Microsoft SQL Server 2008 R2)
  8. 凯撒(Caesar)密码加密解密c语言
  9. Druid 分析报表中的实战(一)
  10. 排序算法——堆排序(C++)