日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用string 字符串拷贝

發布時間:2023/12/31 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用string 字符串拷贝 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?序言:對于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 字符串拷贝的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。