久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

MATLAB編程進(jìn)階:從腳本到工程級(jí)代碼的實(shí)戰(zhàn)指南

MATLAB編程進(jìn)階:從腳本到工程級(jí)代碼的實(shí)戰(zhàn)指南 寫MATLAB程序這件事我前后寫了小十年。從最早用它做課程作業(yè)里的矩陣運(yùn)算到后來(lái)處理現(xiàn)場(chǎng)采集的傳感器數(shù)據(jù)、搭建仿真模型、甚至給別人做工具包可以說(shuō)MATLAB既是入門最容易的工具也是最能暴露一個(gè)人編程習(xí)慣的鏡子。這個(gè)系列走到第六篇我想認(rèn)真聊聊“程序設(shè)計(jì)”本身——不是某個(gè)工具箱的某個(gè)函數(shù)怎么用而是當(dāng)你面對(duì)一個(gè)需要長(zhǎng)期維護(hù)、反復(fù)修改、甚至交給別人接著開發(fā)的MATLAB項(xiàng)目時(shí)那些真正決定成敗的細(xì)節(jié)。這篇文章適合兩類人一類是已經(jīng)能用MATLAB跑通腳本、但總覺(jué)得代碼“能跑但很亂”的進(jìn)階初學(xué)者另一類是在其他語(yǔ)言里寫慣了嚴(yán)謹(jǐn)程序、剛轉(zhuǎn)到MATLAB、被它的靈活弄得不知所措的開發(fā)者。我會(huì)從工程級(jí)代碼的組織方式、控制流與向量化的取舍、調(diào)試與性能優(yōu)化的實(shí)際手法、再到把代碼變成可復(fù)用工具的封裝思路一層層講清楚。里面所有經(jīng)驗(yàn)都來(lái)自實(shí)際項(xiàng)目中的試錯(cuò)和總結(jié)不是教科書里的標(biāo)準(zhǔn)答案但每一招我都親自驗(yàn)證過(guò)。1. 工程級(jí)代碼的起點(diǎn)先把編程風(fēng)格立起來(lái)1.1 認(rèn)清MATLAB的兩種程序形態(tài)初學(xué)者經(jīng)常搞混一件事腳本和函數(shù)到底有什么區(qū)別。簡(jiǎn)單說(shuō)腳本就是一段按順序執(zhí)行的命令集合它操作的是工作區(qū)里的現(xiàn)有變量而函數(shù)有自己獨(dú)立的工作區(qū)通過(guò)輸入?yún)?shù)和輸出參數(shù)與外界交換數(shù)據(jù)。我見過(guò)太多人把幾百行代碼全塞在一個(gè)腳本里跑完一遍工作區(qū)堆了幾十個(gè)變量第二天想改個(gè)參數(shù)得從頭捋一遍才知道哪個(gè)變量是干嘛的。這就是典型的“腳本思維”。工程級(jí)代碼的第一步就是學(xué)會(huì)把功能拆成函數(shù)。舉個(gè)實(shí)際例子。假設(shè)你要處理一批實(shí)驗(yàn)數(shù)據(jù)讀取文件、去噪、提取特征、畫圖。用腳本寫全部擠在一起用函數(shù)拆結(jié)構(gòu)就非常清楚data loadData(experiment_01.csv); % 讀取 clean removeNoise(data, median, 5); % 去噪 features extractFeatures(clean); % 提取特征 plotResults(clean, features); % 畫圖每一行都是一個(gè)函數(shù)調(diào)用你不需要關(guān)注每個(gè)函數(shù)內(nèi)部怎么實(shí)現(xiàn)只要確認(rèn)輸入輸出符合約定就行。這就是模塊化的意義代碼的可讀性不再靠“讀”而是靠“信任函數(shù)名”。1.2 函數(shù)編寫的關(guān)鍵約定寫函數(shù)的時(shí)候有幾個(gè)習(xí)慣我從第三年才開始堅(jiān)持但一旦堅(jiān)持下來(lái)返工率直線下降每個(gè)函數(shù)只做一件事。如果一個(gè)函數(shù)既做濾波又做特征提取還順帶畫圖那它就是一個(gè)定時(shí)炸彈。日后任何一處需要修改你都得小心翼翼生怕動(dòng)一個(gè)功能影響另一個(gè)。參數(shù)校驗(yàn)要放在函數(shù)開頭。別嫌麻煩。validateattributes或assert幾行代碼能省掉你后面排查半天“為什么這次數(shù)據(jù)跑出來(lái)全是NaN”的時(shí)間。優(yōu)先使用varargin做可選參數(shù)。配合inputParser你可以寫出非常優(yōu)雅的參數(shù)接口function result processData(data, varargin) p inputParser; addRequired(p, data, isnumeric); addParameter(p, Window, 5, (x) isnumeric(x) x 0); addParameter(p, Method, median, (x) ismember(x, {median,mean})); parse(p, data, varargin{:}); window p.Results.Window; method p.Results.Method; % ... end調(diào)用的時(shí)候可以寫成processData(data, Window, 10, Method, mean)看代碼的人一眼就知道每個(gè)參數(shù)在干什么。這種命名參數(shù)的方式比單純按位置傳參要友好得多。1.3 命名規(guī)范與區(qū)塊化注釋MATLAB的編輯器自帶%%區(qū)塊功能這是一個(gè)被嚴(yán)重低估的生產(chǎn)力工具。用%%把代碼分成邏輯區(qū)塊每個(gè)區(qū)塊可以單獨(dú)運(yùn)行調(diào)試時(shí)不用從頭跑一遍。我習(xí)慣在每個(gè)區(qū)塊開頭寫一行注釋說(shuō)明這段在干什么。配合section標(biāo)題整個(gè)腳本就像一本書的目錄。命名方面我個(gè)人遵循一套簡(jiǎn)單約定函數(shù)名用小寫開頭的駝峰式如extractFeatures變量名用有意義的英文單詞組合如rawData、filteredSignal常量用全大寫如SAMPLE_RATE。這套規(guī)范堅(jiān)持了五年最大的好處是代碼不需要額外文檔——名字自己就是文檔。提示不要在變量名里用拼音縮寫。當(dāng)時(shí)寫的時(shí)候覺(jué)得方便三個(gè)月后你自己都看不懂“sjcl”是“數(shù)據(jù)處理”還是“時(shí)間序列”。英文單詞即使拼錯(cuò)也比拼音好猜。2. 控制流與向量化告別又慢又蠢的 for 循環(huán)2.1 條件分支和循環(huán)的進(jìn)階寫法MATLAB里的if-elseif-else和switch-case表面上是常識(shí)但實(shí)際項(xiàng)目里分支條件往往不是簡(jiǎn)單的大于小于而是復(fù)合邏輯。這時(shí)候務(wù)必把最可能命中的分支放在最前面——不是玄學(xué)這是利用分支預(yù)測(cè)減少判斷次數(shù)的通用優(yōu)化思路。循環(huán)方面for和while各有適用場(chǎng)景。迭代次數(shù)明確、可預(yù)知的用for依賴條件終止、次數(shù)不確定的用while。但無(wú)論是哪種只要能用向量化解決的問(wèn)題就盡量不要用循環(huán)解決。下面這個(gè)對(duì)比我做了無(wú)數(shù)次每次都能把人說(shuō)服n 1e6; data randn(n, 1); % 循環(huán)寫法 tic; result1 zeros(n, 1); for i 1:n result1(i) data(i)^2 3*data(i) 1; end toc; % 向量化寫法 tic; result2 data.^2 3*data 1; toc;在我目前用的機(jī)器上循環(huán)版本大概耗時(shí)0.05秒向量化版本0.003秒差距接近一個(gè)數(shù)量級(jí)。當(dāng)數(shù)據(jù)量再擴(kuò)大十倍、百倍這個(gè)差距會(huì)變得更加明顯。MATLAB的底層矩陣運(yùn)算庫(kù)是高度優(yōu)化的你寫data.^2 3*data 1時(shí)它調(diào)用的是一連串經(jīng)過(guò)手冊(cè)級(jí)優(yōu)化的C/Fortran例程而你自己寫循環(huán)則是讓MATLAB解釋器逐行逐元素地跑——兩者根本不在一個(gè)量級(jí)。2.2 向量化的核心邏輯逐元素操作與邏輯索引向量化的本質(zhì)是把“對(duì)每個(gè)元素做操作”的思維替換成“對(duì)整個(gè)數(shù)組做操作”的思維。一開始不習(xí)慣很正常我花了很久才真正轉(zhuǎn)變過(guò)來(lái)。但掌握兩個(gè)工具后多數(shù)場(chǎng)景都能直接化解第一個(gè)是逐元素操作符。.*、./、.^這三個(gè)帶點(diǎn)的運(yùn)算符專門處理數(shù)組逐元素運(yùn)算。寫多項(xiàng)式擬合、歸一化、逐點(diǎn)運(yùn)算它們都是主力。很多人容易漏掉點(diǎn)號(hào)寫成data^2就會(huì)報(bào)錯(cuò)——因?yàn)閊是矩陣乘冪和逐元素的.^是兩回事。這個(gè)坑每個(gè)MATLAB用戶都踩過(guò)。第二個(gè)是邏輯索引。這是MATLAB最獨(dú)特也最強(qiáng)大的特性之一。你可以直接用邏輯數(shù)組做索引data randn(1000, 1); outliers data(abs(data) 2); % 提取所有絕對(duì)值大于2的元素 data(abs(data) 2) 0; % 把異常值置零 condition data 0 data 1; selected data(condition); % 滿足條件的結(jié)果這種寫法不僅代碼短而且執(zhí)行效率遠(yuǎn)高于在循環(huán)里加if判斷。核心原因在于邏輯索引直接映射到內(nèi)存層面的批量操作而循環(huán)內(nèi)的條件判斷會(huì)讓解釋器頻繁分支跳轉(zhuǎn)。2.3 什么時(shí)候必須用循環(huán)向量化不是銀彈。有些場(chǎng)景用循環(huán)反而更合理迭代過(guò)程依賴前一步結(jié)果比如遞推公式、狀態(tài)轉(zhuǎn)移這種天然就是串行的硬要向量化只能寫出極其晦澀的代碼。循環(huán)體內(nèi)有復(fù)雜的條件分支每個(gè)分支的處理邏輯完全不同強(qiáng)行向量化需要構(gòu)造多層掩碼矩陣可讀性急劇下降。需要在循環(huán)中動(dòng)態(tài)改變數(shù)組大小——當(dāng)然這種情況建議先預(yù)分配見后面的性能優(yōu)化部分。我個(gè)人的判斷標(biāo)準(zhǔn)很簡(jiǎn)單如果量級(jí)在百萬(wàn)級(jí)以上且沒(méi)有數(shù)據(jù)依賴優(yōu)先向量化如果量級(jí)小、邏輯復(fù)雜、或者涉及串行遞推直接用循環(huán)不用糾結(jié)。代碼清晰和運(yùn)行速度之間需要你自己權(quán)衡不必走極端。3. 調(diào)試實(shí)戰(zhàn)讓代碼自己“說(shuō)話”3.1 斷點(diǎn)調(diào)試的正確姿勢(shì)很多人調(diào)試MATLAB代碼還是靠到處插disp打印變量。這在腳本時(shí)代沒(méi)問(wèn)題但工程代碼一旦龐大打印信息會(huì)淹沒(méi)在輸出窗口里而且你得反復(fù)刪除調(diào)試代碼。正確做法是用斷點(diǎn)調(diào)試。在編輯器左側(cè)點(diǎn)擊行號(hào)旁的空格就設(shè)了一個(gè)斷點(diǎn)。程序運(yùn)行到這里會(huì)暫停這時(shí)你可以在“編輯器”選項(xiàng)卡里查看工作區(qū)懸停變量看當(dāng)前值甚至直接在命令行窗口輸入代碼來(lái)測(cè)試下一步的計(jì)算。配合step單步和step in進(jìn)入函數(shù)內(nèi)部你可以像放慢電影一樣逐幀觀察程序的每一個(gè)動(dòng)作。實(shí)際項(xiàng)目中我最常用的組合是先在主函數(shù)入口設(shè)斷點(diǎn)確認(rèn)輸入?yún)?shù)正確然后在我懷疑出問(wèn)題的模塊前設(shè)斷點(diǎn)運(yùn)行后檢查中間變量再配合step in進(jìn)入函數(shù)內(nèi)部一步步看到底是哪一行產(chǎn)生了錯(cuò)誤結(jié)果。整個(gè)過(guò)程不需要改動(dòng)任何代碼排查完直接繼續(xù)運(yùn)行調(diào)試痕跡為零。3.2 條件斷點(diǎn)省掉重復(fù)的F5有一種情況特別煩人循環(huán)跑幾千次到第158次才出錯(cuò)。你不可能每次都手動(dòng)跑到那一次再斷下來(lái)。條件斷點(diǎn)就是為了解決這個(gè)問(wèn)題的。在斷點(diǎn)圖標(biāo)上右鍵選擇“設(shè)置條件”輸入類似i 158或者更復(fù)雜的條件abs(value - 0.618) 1e-6滿足條件時(shí)程序才會(huì)暫停。這個(gè)功能能讓排查效率提升一個(gè)量級(jí)。我在處理長(zhǎng)循環(huán)里的偶發(fā)錯(cuò)誤時(shí)幾乎全靠它。注意條件斷點(diǎn)里的表達(dá)式每次迭代都會(huì)求值所以不要寫太復(fù)雜的內(nèi)容否則你自己會(huì)變成性能瓶頸。3.3 性能瓶頸定位從猜想到實(shí)測(cè)程序“有點(diǎn)慢”是模糊的說(shuō)法要優(yōu)化它得先知道時(shí)間花在哪。MATLAB自帶的profile工具就是干這個(gè)的。運(yùn)行前敲profile on myScript % 或者 myFunction(...) profile viewer它會(huì)生成一份詳細(xì)報(bào)告列出每個(gè)函數(shù)的調(diào)用次數(shù)、總耗時(shí)、自身耗時(shí)。我見過(guò)太多人憑感覺(jué)優(yōu)化代碼——把某個(gè)函數(shù)重寫了一遍結(jié)果才發(fā)現(xiàn)瓶頸根本不在這里。在實(shí)際項(xiàng)目里我一般遵循這樣的流程先profile跑一遍看耗時(shí)排名揪出前幾名再針對(duì)性地分析是算法問(wèn)題、數(shù)據(jù)結(jié)構(gòu)問(wèn)題、還是循環(huán)問(wèn)題修改后再跑一次profile對(duì)比。優(yōu)化的前提是量化量化之后才不會(huì)做無(wú)用功。3.4 異常處理與“試錯(cuò)”邏輯工程級(jí)代碼必須考慮異常情況文件不存在、數(shù)據(jù)格式不對(duì)、除零、矩陣維度不匹配。裸奔的代碼遇到這些情況要么直接報(bào)錯(cuò)崩潰要么給出一個(gè)完全看不懂的提示。try-catch可以讓你優(yōu)雅地處理這些問(wèn)題try data readtable(data.xlsx); catch ME warning(讀取文件失敗%s, ME.message); data []; % 這里可以執(zhí)行備用方案 endME是MException對(duì)象里面包含錯(cuò)誤類型、錯(cuò)誤消息、錯(cuò)誤堆棧。用warning而不是error可以讓程序繼續(xù)運(yùn)行但提醒你出了問(wèn)題。這樣在批量處理多個(gè)文件時(shí)一個(gè)文件出錯(cuò)不會(huì)中斷整個(gè)任務(wù)最后你還能匯總所有警告統(tǒng)一查看。還應(yīng)該養(yǎng)成一個(gè)習(xí)慣對(duì)外提供的函數(shù)入口要給出友好報(bào)錯(cuò)。在函數(shù)最前面檢查輸入一旦不滿足要求就用error拋出一個(gè)帶說(shuō)明的錯(cuò)誤。這個(gè)習(xí)慣能讓調(diào)用者第一時(shí)間明白問(wèn)題出在哪而不是被一個(gè)莫名其妙的維度錯(cuò)誤帶跑偏。4. 性能優(yōu)化從“能跑”到“跑得漂亮”4.1 預(yù)分配最簡(jiǎn)單但最有效的優(yōu)化MATLAB的數(shù)組如果頻繁擴(kuò)展會(huì)反復(fù)重新分配內(nèi)存??催@個(gè)例子tic; result []; % 空數(shù)組開始 for i 1:100000 result(i) i^2; % 每次擴(kuò)展都可能重新分配內(nèi)存 end toc; tic; result zeros(100000, 1); % 預(yù)先分配好空間 for i 1:100000 result(i) i^2; end toc;在我的機(jī)器上預(yù)分配版本幾乎快一個(gè)數(shù)量級(jí)。原因是當(dāng)數(shù)組長(zhǎng)度變化時(shí)MATLAB需要在內(nèi)存中尋找更大的連續(xù)區(qū)塊并拷貝舊數(shù)據(jù)這個(gè)操作的時(shí)間成本隨數(shù)組長(zhǎng)度增長(zhǎng)而增長(zhǎng)。如果你預(yù)先知道數(shù)組最終大小直接zeros或NaN初始化循環(huán)只負(fù)責(zé)填值不負(fù)責(zé)擴(kuò)容。這個(gè)優(yōu)化簡(jiǎn)單到不需要?jiǎng)幽X但在實(shí)際工作中效果極其明顯。凡是遇到循環(huán)里不斷往數(shù)組里追加數(shù)據(jù)的我第一反應(yīng)就是找循環(huán)外面能不能預(yù)分配。4.2 算法優(yōu)化向量化與“分而治之”很多人以為性能優(yōu)化就是寫更快的代碼其實(shí)真正重要的是選更快的算法。同樣的功能用不同的數(shù)據(jù)結(jié)構(gòu)和算法性能差距可以超過(guò)100倍。舉一個(gè)常見場(chǎng)景判斷一個(gè)元素是否屬于集合。用ismember解決很快但如果你在一個(gè)大循環(huán)里反復(fù)調(diào)用ismember耗時(shí)可能還是會(huì)超出預(yù)期。更好的方式是先把集合轉(zhuǎn)成containers.Map查詢是常數(shù)時(shí)間keys {alpha, beta, gamma, delta}; map containers.Map(keys, 1:length(keys)); % 在循環(huán)里快速查詢 for i 1:numel(testList) if isKey(map, testList{i}) % 命中邏輯 end end這個(gè)例子的核心思想是用哈希結(jié)構(gòu)替代線性查找把查詢復(fù)雜度從O(n)降到O(1)。很多MATLAB性能問(wèn)題追根溯源都是算法復(fù)雜度的問(wèn)題而不是代碼寫法的問(wèn)題。當(dāng)你覺(jué)得“MATLAB好慢”的時(shí)候先問(wèn)自己算法是不是有更優(yōu)的選擇4.3 內(nèi)存連續(xù)性與列優(yōu)先順序MATLAB存儲(chǔ)矩陣是列優(yōu)先的。這意味著遍歷一個(gè)矩陣時(shí)按列訪問(wèn)比按行訪問(wèn)要快得多。很多從C/C轉(zhuǎn)過(guò)來(lái)的朋友容易忽略這一點(diǎn)??匆粋€(gè)經(jīng)典對(duì)比A randn(5000, 5000); % 按列求和快速 tic; for j 1:size(A, 2) colSum sum(A(:, j)); end toc; % 按行求和慢速 tic; for i 1:size(A, 1) rowSum sum(A(i, :)); end toc;兩者邏輯相似但按列訪問(wèn)比按行訪問(wèn)快得多。大數(shù)據(jù)量下甚至可能差好幾倍。所以寫循環(huán)遍歷矩陣時(shí)盡量讓循環(huán)的外層對(duì)應(yīng)行、內(nèi)層對(duì)應(yīng)列也就是“先列后行”的順序這樣內(nèi)層訪問(wèn)的是連續(xù)內(nèi)存。此外在數(shù)據(jù)導(dǎo)入時(shí)盡量讓最終使用的矩陣是連續(xù)的數(shù)值矩陣避免頻繁使用cell數(shù)組存取數(shù)值數(shù)據(jù)。cell數(shù)組提供了靈活性但它的存儲(chǔ)開銷和訪問(wèn)速度都不如普通數(shù)值數(shù)組。如果在性能敏感的代碼里發(fā)現(xiàn)cell數(shù)組是瓶頸可以嘗試重構(gòu)為數(shù)值矩陣加索引的方式。4.4 大數(shù)據(jù)場(chǎng)景下的注意事項(xiàng)當(dāng)數(shù)據(jù)量大到內(nèi)存吃緊時(shí)普通的優(yōu)化思路就不夠了。這時(shí)有幾個(gè)原則需要特別留意避免產(chǎn)生大型中間變量。比如A B * C; D A E;A作為中間變量占了一次完整的內(nèi)存拷貝。如果B*C的結(jié)果只是用來(lái)和E相加可以嘗試約減運(yùn)算符。MATLAB對(duì)表達(dá)式的中間結(jié)果做了不少優(yōu)化但你自己也要注意保持表達(dá)式簡(jiǎn)潔。用single精度代替double精度。很多科學(xué)計(jì)算場(chǎng)景其實(shí)用單精度就足夠了。內(nèi)存占用直接減半帶寬壓力也減半。但要注意單精度的數(shù)值誤差會(huì)增大涉及敏感運(yùn)算時(shí)務(wù)必驗(yàn)證。分塊處理代替全量加載。當(dāng)數(shù)據(jù)文件有幾十GB時(shí)不可能一次性讀進(jìn)內(nèi)存。用datastore或自定義分塊讀取邏輯每次只處理一個(gè)塊處理完即釋放。這是工程級(jí)的“流式處理”思路對(duì)MATLAB同樣適用。5. 把代碼變成工具面向?qū)ο笈cApp設(shè)計(jì)5.1 面向?qū)ο蟪绦蛟O(shè)計(jì)的實(shí)用價(jià)值很多人一聽說(shuō)“面向?qū)ο蟆本陀X(jué)得是其他語(yǔ)言的專利MATLAB只是“數(shù)學(xué)計(jì)算器”。其實(shí)MATLAB的classdef機(jī)制相當(dāng)成熟而且在復(fù)雜項(xiàng)目中價(jià)值非常大。什么場(chǎng)景適合用面向?qū)ο笪业呐袛鄻?biāo)準(zhǔn)是當(dāng)你有多個(gè)變量需要捆綁在一起處理并且有一組操作總是圍繞它們展開時(shí)。比如你處理的是一個(gè)采集信號(hào)它包含數(shù)據(jù)、采樣率、時(shí)間戳、采集通道名稱、單位等屬性同時(shí)需要對(duì)它做濾波、去基線、切片、畫圖等操作。用結(jié)構(gòu)體固然可以但每次都要手動(dòng)帶上參數(shù)而且無(wú)法保證“數(shù)據(jù)”和“采樣率”來(lái)自同一個(gè)信號(hào)——類可以把這一切封裝起來(lái)。classdef SignalData properties Data SampleRate Timestamp ChannelNames end methods function obj SignalData(data, fs) obj.Data data; obj.SampleRate fs; obj.Timestamp datetime(now); end function filtered removeBaseline(obj, windowSize) filtered obj.Data - movmean(obj.Data, windowSize); end function plotTimeDomain(obj) t (0:length(obj.Data)-1) / obj.SampleRate; plot(t, obj.Data); xlabel(時(shí)間/s); ylabel(幅度); end end end使用的時(shí)候sig SignalData(workData, 1000); % 創(chuàng)建對(duì)象 cleanData removeBaseline(sig, 50); % 調(diào)用方法自動(dòng)帶上對(duì)象屬性 sig.plotTimeDomain(); % 直接畫圖這樣的代碼不僅整潔而且降低了調(diào)用方的認(rèn)知負(fù)擔(dān)——不需要把一堆分散的參數(shù)到處傳遞。對(duì)于項(xiàng)目越來(lái)越大、協(xié)作人數(shù)越來(lái)越多的情況類定義本身就是一份活文檔。5.2 什么時(shí)候不要過(guò)度設(shè)計(jì)但我也遇到過(guò)不少人把MATLAB寫成了Java為每個(gè)小功能建一個(gè)類接口抽象了三層。這是另一條彎路。MATLAB的核心優(yōu)勢(shì)是快速開發(fā)、快速驗(yàn)證過(guò)度設(shè)計(jì)會(huì)讓簡(jiǎn)單問(wèn)題復(fù)雜化。我個(gè)人的原則是腳本階段允許“臟亂快”一旦代碼要整個(gè)項(xiàng)目復(fù)用、要交給別人維護(hù)才重構(gòu)為函數(shù)或類。這個(gè)臨界點(diǎn)需要你自己根據(jù)項(xiàng)目規(guī)模判斷。總之面向?qū)ο笫菫榻鉀Q協(xié)作和擴(kuò)展問(wèn)題的不是為了炫耀技巧。5.3 用App Designer把程序變成產(chǎn)品如果做了工具給別人用命令行界面不夠友好可以試試MATLAB自帶的App Designer。它相當(dāng)于一個(gè)可視化的界面設(shè)計(jì)器可以拖拽按鈕、文本框、坐標(biāo)區(qū)、儀表盤等控件然后為每個(gè)控件編寫回調(diào)函數(shù)。我之前做過(guò)一個(gè)數(shù)據(jù)查看工具用了不到半天時(shí)間就把一個(gè)命令行腳本包裝成了帶界面的小程序左邊是文件列表中間是曲線圖右邊是參數(shù)面板底部是日志輸出。App Designer在生成代碼時(shí)自動(dòng)產(chǎn)生一個(gè)類定義基于matlab.apps.AppBase你在回調(diào)里訪問(wèn)控件屬性即可例如% 按鈕回調(diào)示例 properties (Access private) Data end methods (Access private) function onLoadButtonPushed(app, event) [file, path] uigetfile(*.csv); app.Data readtable(fullfile(path, file)); plot(app.UIAxes, app.Data.Time, app.Data.Value); end end把App打包成.exe可執(zhí)行文件配合MATLAB Compiler你的算法、界面、邏輯全部可以交付給不裝MATLAB的用戶使用。這一步完成之后“程序”就變成了真正的“工具”。6. 避坑實(shí)錄我從無(wú)數(shù)次實(shí)驗(yàn)里撿出來(lái)的經(jīng)驗(yàn)6.1 常見問(wèn)題速查表我把多年來(lái)遇到的高頻問(wèn)題整理成了一張表格幾乎每個(gè)項(xiàng)目都會(huì)用到問(wèn)題場(chǎng)景典型報(bào)錯(cuò)解決思路矩陣維度不匹配Matrix dimensions must agree檢查size注意行向量與列向量的區(qū)別必要時(shí)用reshape或轉(zhuǎn)置索引越界Index exceeds the number of array elements檢查循環(huán)邊界考慮使用numel或size動(dòng)態(tài)獲取變量被覆蓋工作區(qū)變量與函數(shù)名沖突避免用函數(shù)名作變量名比如不要命名變量sum或mean字符串比較失敗if str abc總是不成立用strcmp不要用比較字符串文件路徑錯(cuò)誤File not found使用fullfile拼接路徑注意相對(duì)路徑與當(dāng)前工作目錄不一致循環(huán)慢到崩潰等了好久不出結(jié)果查profile檢查是否有預(yù)分配思考能否向量化程序報(bào)錯(cuò)但不知錯(cuò)哪堆棧深錯(cuò)誤信息晦澀用斷點(diǎn)調(diào)試配合dbstack定位出錯(cuò)行浮點(diǎn)比較失敗if (a/b) 0.333不成立浮點(diǎn)數(shù)用abs(x-y) tol方式比較不要用第1條和第8條是我見過(guò)最多的兩個(gè)錯(cuò)誤。矩陣維度問(wèn)題大多源于對(duì)數(shù)據(jù)形狀不夠敏感浮點(diǎn)比較問(wèn)題則是對(duì)計(jì)算機(jī)浮點(diǎn)表示缺乏認(rèn)識(shí)。理解這兩點(diǎn)能省掉大量排錯(cuò)時(shí)間。6.2 新手最容易踩的五個(gè)坑用i或j做循環(huán)變量然后又把復(fù)數(shù)單位弄丟了。MATLAB里i和j默認(rèn)是虛數(shù)單位。一旦你寫for i 1:10循環(huán)結(jié)束后i就被改成了數(shù)值10。如果后面某個(gè)表達(dá)式需要用到虛數(shù)單位你就得到莫名其妙的結(jié)果。建議循環(huán)變量用idx、k這類名稱徹底避開沖突。腳本里直接硬編碼文件路徑。今天在自己機(jī)器上能跑明天換臺(tái)電腦就崩潰。把輸入路徑放在腳本開頭集中管理甚至用input交互式獲取才是工程級(jí)的做法。調(diào)試代碼忘刪。disp、keyboard、plot臨時(shí)驗(yàn)證代碼留在函數(shù)里導(dǎo)致輸出亂成一團(tuán)。我建議臨時(shí)驗(yàn)證代碼統(tǒng)一用一個(gè)變量控制開關(guān)比如DEBUG true;發(fā)布前改成false。忽視矩陣方向。讀入數(shù)據(jù)時(shí)行是樣本、列是特征還是反過(guò)來(lái)的這個(gè)約定如果前后不統(tǒng)一程序跑出來(lái)全是錯(cuò)的還特別難查。建議在數(shù)據(jù)讀取后立刻驗(yàn)證size并寫注釋。循環(huán)里動(dòng)態(tài)命名變量。比如eval([var, num2str(i), data])。這類代碼讀起來(lái)極其痛苦調(diào)試更是噩夢(mèng)。應(yīng)該用cell數(shù)組或結(jié)構(gòu)體比如var{i} data通過(guò)索引訪問(wèn)優(yōu)雅又安全。6.3 我自己的“代碼體檢”清單每次交付一段比較重要的代碼之前我會(huì)從頭到尾過(guò)一遍這個(gè)清單所有函數(shù)都有明確輸入輸出注釋說(shuō)明了參數(shù)含義和期望的數(shù)據(jù)類型。所有循環(huán)都有預(yù)分配或者有足夠的理由不預(yù)分配。所有文件訪問(wèn)都通過(guò)fullfile拼接路徑且考慮了文件不存在的情況。所有比較浮點(diǎn)數(shù)的地方都用容差方式而不是。所有可能在批處理中出錯(cuò)的函數(shù)都包了try-catch且給出可讀的警告信息。所有臨時(shí)驗(yàn)證代碼都被移除或關(guān)閉。腳本和函數(shù)的工作區(qū)清晰沒(méi)有殘留無(wú)用變量。這套清單并不復(fù)雜但每次按它走一遍代碼質(zhì)量都能上一個(gè)臺(tái)階。很多“莫名奇妙跑不通”的問(wèn)題其實(shí)早在寫代碼的階段就可以通過(guò)習(xí)慣避免。6.4 一個(gè)真實(shí)的排查案例最后分享一個(gè)我印象深刻的排查經(jīng)歷。某次處理一批實(shí)測(cè)振動(dòng)數(shù)據(jù)程序跑得挺快但結(jié)果曲線總有毛刺。一開始我懷疑是傳感器本身的問(wèn)題后來(lái)把數(shù)據(jù)導(dǎo)入到一個(gè)簡(jiǎn)單的繪制腳本里發(fā)現(xiàn)原始數(shù)據(jù)就沒(méi)有毛刺說(shuō)明問(wèn)題出在我自己的處理流程里。于是我從頭逐步執(zhí)行每一個(gè)處理步驟對(duì)比每一步前后的數(shù)據(jù)形狀和范圍。最后發(fā)現(xiàn)是在去噪步驟里我寫的窗口參數(shù)直接用了默認(rèn)值movmean(data, 5)但這個(gè)默認(rèn)值對(duì)高頻采樣的數(shù)據(jù)來(lái)說(shuō)窗口太小完全沒(méi)起到去噪作用。把窗口大小改成根據(jù)采樣率自適應(yīng)計(jì)算后問(wèn)題迎刃而解。這個(gè)案例給我最大的啟發(fā)是程序出問(wèn)題時(shí)先確認(rèn)數(shù)據(jù)流再懷疑算法最后才懷疑硬件和工具。多數(shù)時(shí)候問(wèn)題都在自己的代碼邏輯里用斷點(diǎn)加對(duì)比的方法能快速定位。寫MATLAB這些年我最深的體會(huì)是這個(gè)工具真正強(qiáng)大的地方不在于它會(huì)多少內(nèi)置函數(shù)而在于你能不能把一段只服務(wù)于當(dāng)前任務(wù)的“草稿代碼”錘煉成結(jié)構(gòu)清晰、性能達(dá)標(biāo)、邊界健壯的“工程代碼”。第六篇講的這些內(nèi)容不會(huì)讓你一次就寫出完美程序但至少下次再面對(duì)一個(gè)復(fù)雜任務(wù)時(shí)你會(huì)知道從哪里下手組織代碼、用什么手段定位問(wèn)題、在哪一步去追求性能。照著這些思路去寫代碼自己會(huì)變得越來(lái)越干凈。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲日韩av一区二区三区百合| 婷婷啪啪| 久久黄色性爱视频| 色悠久久久av| 国产 亚洲 丝袜 制服| 东北操逼| 神马午夜久久久| 亚洲中文一区二区三区| AV男人天堂网| 夜夜一区二区| 7777奇米影视久久| 一本色道久久综合亚洲二区三区| 超碰79人人乐| 无码区蜜乳| 本道在线| 东北女人操比视频| 91色色色| 久久国产熟女影院| 天天干人人看综合| 韩日巨乳美女免费视频在线观看| www鬼畜国产男人的天堂| 9色国产精品一区粉嫩| 亚洲一二三| www.色婷婷色综合| av网页一区二区三区| 日本天天干天天操一区| 97超碰久久色| 1024手机看片欧美日韩| 黄色污污污污污污网站| 一本一道久久综合久久| 婷婷丁香一区二区三区| 99热这里是精品| 天天爽夜夜爽夜夜爽精| 国产欧美另类久久久精品课程| 青青草吊丝| 操美女高潮抽搐白浆| 国产操偷| 欧美精品成人一区二区在线观看| 92久久| 婷婷三区| 蜜臀AV成人精品蜜臀AV久久| 亚洲春色激情小说| 夜夜高潮夜夜爽高清视频一 | 大香蕉丝袜一级片| 久久肏大逼| 国产91福利小视频在线观看 | 国产白嫩漂亮KTV在线| 国产午夜福利专区综合| 欧美色图 色综合图| 美女网站91| 东京热大香蕉| 五月天婷婷在线看| 在线a v| 久久中文字幕一区不卡| 十八禁av无码免费网站APP| 91 丝袜在线播放| 亚洲小电影免费涩涩成人在线高清| 成人精品久久久午夜福利| 亚洲?V无码专区在线电影| 久久久亚洲Av| 欧美熟妇成人一区二区| 人人扣人人操| 欧美大干日韩| 欧洲精品一级二级精品综合视频综合| 亚洲五月天激情| 色性综合| 色哟哟-国产专区| 99精品伊人| 国产大片精久久久久久| 日日妻色网| 玖玖久久久| 亚洲男人在线观看天堂| 欧美碰碰综合色| 欧美色就是色| 日本123区操B视频| 欧美色图天堂在线| 韩国女主播青草在线| 国产乱弄免费在线视频。| 中文字幕十五区| 清纯唯美亚洲另类| 日本视频在线中文字幕| 无码精品人妻一区二区三区妖精 | 丝袜狂射91| 色网在线| 囯产精品久久久久久久久久梁医生| 一本久道在线综合视频| 五月天激情四射| 天天综合精品| 又摸又舔在线观看网站| 午夜一区| 婷婷五月天社区| 中文字幕第23区| 青青草五月份天| 日韩精品中文字幕人妻| 顶级丝袜熟女一区二区三区| 青青草在线视频欧美| 亚洲欧洲日韩中文字幕一区| 国产成人久久精品蜜臀| 天天看片麻豆| 乱欲视频| 天天爽天天爽| 骚女天天综合网| 小情侣高清国产在线视频| 熟女自慰久久久| 色 亚洲 91| 啊啊啊啊啊啊在线观看| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 日韩黄色片子| 你草精品在线视频| 加勒比在线视频一区二区三区| 91是天天| 亚洲做性| 久久老子无码午夜伦不卡| 日本999精品| 欧美激情视频在线一区| 97中文字幕色| 精品人妻1区| 夜夜爽妓女| 天美精品原创av片国产| 日本精品高清一二区一本到| 人妻无码视频一区二区三区久久| 久久婷婷综合国际产色怕| 神马九九九| 精品九九| 精品人妻一区二区三区-国产精品 一个人在线看的黄色电影网站 | SS久久| 国产肏逼网站| 一本色道久久综合狠狠操| 大鸡吧尹人在线| 乱欲视频| 欧洲精品一二三在线| 吖在线不卡一区二区国产剧情| 麻豆久久久久久久久丝袜| 青青在线视频日韩欧美| 十八禁网站在线| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 国产人人干| 中字乱伦AV| 97亚洲在线| 四虎影库国产精品免费| 国产久久成人| 久久风骚城市| 探花熟女,姿勢到位,體驗感也到位| 亚洲精品一卡二卡三卡福利视频网站| 久久五月天婷婷丁香中文字幕| 亚洲色图美腿丝袜| 婷婷中文网| 韩日巨乳美女免费视频在线观看| 大香蕉丝袜一级片| 日韩av无码网站| 欧美少妇内射| AA丁香综合激情| 尤物av网站免费在线播放| 中 文字幕一区二区三四 五 区日 日 骚| 92性色国产午夜福利在线661| 麻豆人妻偷人精品无码视频| 超AV色女| 人人操,操人人| 凹凸视频在线一区二区| 欧美性爱中文字幕无线码| 自拍偷拍第26| 日韩精品在线观看网站| 九九亚洲| 嗯嗯啊好大| 日韩av影片在线观看| 国产精品国产精品国产| 欧美91精彩| 丰满人妻一区二区三区| 久久久久久日韩| 97资源站日韩| 91在线/欧洲| 91neishe| 妺妺跟我一起洗澡没忍住| 少妇久久| 欧美人妖内射| 色悠久久久av| 欧美午夜色妇色鬼| 婷婷激情一区二区三区俺也去| 免费中文在线| 日韩久久.一级黄色片| 98超碰欧美| 躁躁日曰躁2020| 五月丁香六月婷| 中文精品一区二去| 一级毛片久久久久久久女人18| 欧美日韩亚洲天堂| 亚洲 欧美 日韩另类 麻豆| 少妇69中文| 日韩精品一区二区三区色欲 | 丝袜无码a片| 超碰79人人乐| 国产免费一区二区在线A片视频| 亚洲色婷婷久久91| 97超碰日韩| 友优传媒精品在线一区二区| 久久人妻一区二区三区高清| 亚洲AV在线资源| 精品无人区麻豆乱码久久久| 免费看污网站| 91偷拍欧美亚洲| 大香蕉免| 96免费视频在线| 欧美日韩222| 久久综合乱子伦国产免费| 亚洲婷婷五月天| 婷婷色婷婷| 亚洲一区日韩| 亚洲色啪| 久久熟女人| 91久青| 99免费在线视频| www久| 九九色热| 久久成年精品| 60秒免费视频| 久操高青| 自拍二页| 久久久精| 国产一区二区在线播放量| 无码人妻精品一区二区三区九九| 欧美日韩青操| 欧美亚洲系列| 九九草| 99热这里只有精品18| 久久蜜桃一区二区| 色五月AV| 国产午夜福利专区综合| 国产av又色又爽又黄| 久干9操| 熟女视频久久| 九九九综合精品| 9九九国产| AV久日| 日本国产二线女色| 亚洲少妇色| 亚洲宅男天堂| 干b在线性社区| 亚洲在钱| 女沟厕偷窥piss小便| 丁香五六月啪啪| 久久久久久精品免费看A级| 国产精品分类在线观看| 黄片在线免费在线观看| 内射白嫩美女| 1区2区3区在线视频| 超碰午夜在线| 久久大黄片| 亚乱色| 精品一区二区三区蜜桃臀赵总| 密臀在线免费观看| 精品国产乱码久久久影院| 91在线视频国产网站| 艹精品| 一本道综合色图| 无码人妻精品一区二区三区九九| 无码78| 久久91精品国产9丨久久分亭| 99久久99九九99九九九| 九九九精品色乱九九九| 免费黄色片。| 亚州综合色| 亚洲91大片| 日本幼女18+| 国产精品久久久无码aV去| 黑人操一区二区| 日本天天吊| 日韩黄色小说| 日韩亚洲中文字幕在线| 欧美激情欧美精品| 天天做天天爱| 欧美拳交在线播放| 青青草福利视频| 美国一区二区免费视频| 美女淫穴| 欧洲在线性爱视频| 日韩内射视频| 久久久九九九| 大胆91| 呦女网站| 久久直播国产| av东京热男人的天堂| 偷拍 欧美 日韩| 少妇高潮99p| 九九五月天| 青娱乐国产盛宴视频| 欧美性,亚州色| 日韩熟女三十乱伦| 欧美狠狠弄| av网站免费看| 国产丰满熟夫69mpp| 国产精品久久久啊| 江都AV在线| 婷婷色综合欧美日韩| 欧美午夜精品久久久久久3D| 精品999999| 天天碰操中国年青熟妇| 国产最火爆久久国产网站网站 | 日本操逼视频在线| 亚洲激情深爱文学小说网站| 日韩在线观看字幕精品| 五十路人妻在线| 一本一道波多野毛片中文在线| 亚洲吊色| 久久久久国产精品喷潮免费观看臀 | 九九99久久| 欧美日韩人妻精品系列一区二区三区| 人人操人人狠狠操| 久久精品欧美一区二区三区不卡| 美国日韩黄色片| 骚货 中文字幕 av| 色五月首页| 日韩精品 欧美激情| 伊人久久88国产女| 欧美日韩国产黄色片| 97丝袜亚洲在线播放| 乱欲一区二区| 黄页| 久久69精品久久久久久久| 色狠人在线99| 久久久久国产一区二| 美女AV一区二区| 国产精品制服丝袜清纯唯美| 中国91AV| 久久一本大香蕉 | 亚洲熟妇综合久久久久久| 久操大香蕉| 97这里只有精品| 加勒比AV天堂| 亚洲五月丁香花狠狠干一区二区三区 | 国产福利合集| 后入国产| 欧美日韩在线小说| 亚洲熟妇图片| 人妻一区视频| 91丨人妻丨国产丨丝袜| 大香蕉日亚洲日本亚大 | 99蜜桃臀亚洲成人在线观看| 精品色色| 亚洲情色中文字幕一区| 国产91福利小视频在线观看| 亚洲图片欧美另类综合免费视频大大香| 成人丁香五月| 国产91乱伦| 91亚洲欧美激情| 我中文字幕6区| 日本91白丝| 郑州宾馆老熟女露脸啪啪| 亚洲欧美黄| 五月天加勒比啪| 啊啊啊好湿国产一二| 国产美女高潮叫床视频| 成人免费视瓶| 无码高清操逼| 欧美日韩成人在线| 男女无套 免费网站| 免费超碰97久久| 伊人青青一区成人视频在线观看区| 午夜男人av| 成人羞羞视频国产| 91美| 日日AAvv| 亚州Av天美传媒| 国产精品suv一区| 日韩AV电影网站| 五月婷婷五月天| 日韩欧美国产高清视频| 三级网色| 深夜国产一区二区三区在线看| 欧美性爽xyxOOOO| 欧综合网| 91精品国产91熟女| 国产嫩草精品A88AV| 天天日美女的B| 青青草视频在线观看一区二区| 69精品少妇一区二区三区蜜桃| 国产激情av女片自拍| 大香蕉免费3| 亚洲乱码精品一区二区| 首页亚洲国产高跟丝袜诱惑视频 | 超碰98综合网| 久久亚洲熟妇在线视频| 久插综合| 久久久久大香青草精品综合| 中文字幕精品久久久久人妻红杏ⅰ| 高清不卡国产| 高潮嗯啊性感美女久久久| 亚洲不卡不卡中文字幕不卡| 91天堂视频| 你草精品在线视频| 欧美78| 天天操人人操骚逼网站| 亚洲人久久久网| 果冻传媒A片一二三区| 欧美大色交| 日韩精品人妻中文字幕不卡乱码| 丝袜夫妻自拍| 无码人妻丰满熟妇奶水区毛片| 嫩草 人人网精品| 热的中文 热的有码 热的国产| 91伊人久久在线| 亚洲不卡一| 婷婷激情四射| av在线播放国产一区| 国产精品久久久久久无码红治院| 日本一区二区三区四区免费观看| 丁香五月电影| 成年男人的天堂| 国产九区| 欧美熟妇精品黑人巨大91| 亚洲色人| 成人 日本A片无码8888| 人人澡人人爽人人精品| 大香蕉综合在线| 蜜臀久久99精品久久久久久成人小说| 美女黄网| 国产精品嫩草影院免费| www.狠狠| 熟妇高潮精品一区二区三区下载| 一区二区视频在线播放| 99精品视频在线观看| 天堂资源欧美| 日本熟妇自慰性高潮一区二区三区| 日本二三四区| 91社区拍啪人妻| 五月综合激情| 超碰1997| 中国操逼无码| 综合久久中文字幕综合日韩精品| 天天日天天射天天干| 99精品综合久久久久五月天| 百度百度日本操逼| 中文字幕日本久久| 97超碰资源网| 不卡av免费在线网址| 久久久久久久9最新免费视频观看| 97青娱乐超碰久久| 日韩精品人妻中文字幕不卡乱码| 欧美一区二区日韩三区| 黄色乱论网站| 亚洲情色 欧美| 在线国产福利网址导航| 韩日男人的天堂| 人妻熟女一区二区三区视频| 99久久e免费热视| 图色综合网| 变态综合色| 操逼逼福利视频| 亚洲熟女综合| 亚洲精品免费中文字幕| 亚州精人品大香蕉| 在线洲亚线| 亚洲精品官网在线观看| 激情亚洲天堂| PMv在线观看| 国产精品青青草| 国产精品乱码久久久久久久久| 少妇人妻好深太紧了vr91| 国产精品久久久视频| 欧美亚洲系列| www.婷婷| 99re在线| 亚洲熟妇图片| 伊人久久婷婷| 婷婷久久久精品| 国产白嫩漂亮KTV在线| 欧美情色男人的天堂| 成人精品在线免费视频| 99久久com免费视频′| 久久精品操| 九九色综合| 粉嫩AV一区二区夜夜| 97人人干| 韩美日操逼| 成人热久久精品| 男女日B国产| 亚洲色资源| 国产大学生口爆吞精合集| 天天操人人操骚逼网站| 唐山老熟妇露脸啪啪叫| 上床啊啊啊| 亚码激情| 午夜a成v人电影| 男人的天堂VA在线| 日韩精品在线观看网站| 欧洲一区二区| 久久久久久夜夜夜夜夜| 久久丁香久草综合网| 欧洲乱码视频| 一级久久久久久久久久久| 九九热在线精品视频| 亚州九九九精品视频| 天天操天天干一区二区| 九九人妻| 五月天啪啪| …亚洲黄色厕厕女女在线播…| 五月天婷婷综合| 无码国产精品96久久久久孕妇| 欧美精品人妻视频| 国产操伦| 丝袜足交视频| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 99亚洲国产精品色一区二区三区| 岛国999| 99热欧美| 九九视频黄色片| 玖日综合网| 天美av在线观看| 日韩亚洲国产视频| 久久久人妻| 欧美色图91p| 亚洲国产第一页综合视频| 久艾草在线精品视频在线观看| AV色五月天| 99re3这里只有精品| 美中日韩无码| 欧美组图日韩亚洲中文字幕| 天天综合网亚洲综合网| 亚洲熟妇丝袜在线观看| 91丨九色丨国产打屁股| 亚洲小电影免费涩涩成人在线高清| 久久成人东京热人妻| 国产丸一视频| 中文字幕av片| 亚洲av资源| 日韩 人妻 精品| 色五月AV| 伊人青青草久久| 综合欧美日韩在线观看| 毛片久久| 熟女熟妇一区二区三四区| 亚洲AV无码久久精品蜜桃小说| 久久综合超碰| 亚洲美女精品| 98久久| 日本一级二级三级网站| 一级性爱网| 青青操轻轻| 青娱乐999| 91伊人影视综合| 亚洲欧美不卡线| 蜜臀一二三区| 婷婷五月天无码 | 亚洲有码第一页| 韩国轻伦国内自拍一区| 少妇高潮九九九九| 夜夜肏2021| 岛国片在线观看视频亚洲| 久久久久久一日韩字幕无码| 91久久九九精品国产综合| 日日摸天天爽夜夜欢| 操屄日韩| 欧美青青草视频| 国产视频一区二区三区久久亚洲天堂| 日日爽夜夜爽| 中文字幕 人妻不满 在线视频| 天天摸天天操视频| 9999免费精彩视频| 婷婷五月天激情网| 伊人久操| 欧美黄色大香蕉一区二区| 乱伦AVxx| 天美麻花大全视频| 国产精品99久久久www| 自拍偷拍 高清无码| 天天操人人操狠狠插| 久久夜嗨| 日韩视频中文字幕| 在线观看中文av字幕| 亚洲熟妇A V黑人| 牛牛操视频逼| 六月丁香五月婷婷| 搡老女人老91妇女老熟女| 午夜综合在线| 天堂亚洲精品| 国产热RE99久久6国产精品首| 亚洲日韩久久精品一区| 国产男人又猛又粗又爽| 男人网站婷婷| 日本黄大片在线观看视频| 啊啊啊啊操死我| 91亚州| 都市久久精品激情亚洲| 人妻少妇被猛烈进入中| 久久午夜神马| 91女优在线观看| 九九五月天| 91国产丝袜白虎| 99超碰碰| se,,,亚洲欧美| 粉嫩在线一区二区懂色| 日韩黄片视频试看| 九一国产精品| 国产白丝网站| 人妻偷拍一区二区三区| 亚洲激情久久久伊人综合| 国产一区二区视频在线播放| 天天做天天爱天天高潮| 欧美在线播放aaaa| 日本熟妇人妻中出视频| 精品久久一区二区三区四区五区| 美女久久久久久久| 怡红院网站在线视频| 资源新线在线天堂| 综合操逼| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 久草精品热视| 色哟哟精品1精品2| 在线人成亚洲视频免费观看| 立川理惠无码一区二区| 超碰97色色| 亚洲男人天堂网站| 偷拍欧美激情| 欧美骚少妇| 欧美日韩大香蕉| 丁香六月激情| 超碰9 7女人| 人人玩人人添人人澡免费| 日韩午夜啪啪视频| 久久久九精品| 亚洲欧洲日韩天堂av| 欧美嗯啊……在线观看视频免费| 精品久久久一本一道| 日日干天天干夜夜爽| 欧美在线视频99| 欧美在线综合| 色狠狠 - 百度| 96精品久久久久中文字幕| 国产路线专区| 97色干| 啊啊啊在线看| 特级毛片特黄久久免费看| 九九亚洲精品| 亚洲A曰本VA欧美VA视频| 亚洲情色电影网| 亚洲欧美97√| 婷婷五月天网| 97亚洲精品超碰| 99操碰| 在线洲亚线| 人人扣人人操| 国产一二三福利视频网| 亚洲精品成人| 精品国产99999| 99久久综合网| 成人一二三区| 日韩欧美视频青青| 91色综合| 亚洲欧美另类少妇精品| 操操逼视频| 蜜臀99999| 在线无码视频| 秋霞鲁丝午夜无码一区二区三| 欧美日韩黄片精品在线| 中 文字幕一区二区三四 五 区日 日 骚| 黄片视频观看| 伊人久久久日韩一区| 国产久久成人| 97国产精品久久久久| av天堂手机版追回| 99少妇| 青青国产精品在线| 亚洲A曰本VA欧美VA视频| 麻豆人妻少妇在线免费观看| 免费一级黄色录像影片| 九九九九97| 亚洲超碰在线| 丁香五月色| 亚洲图片欧美色| 91嫩草欧美| 18禁网站在线播放| 男人的天堂com| 观看免费区二区三区二| av日韩国产一区二区| 精品久久久一本一道| 夜夜爽77777| 亚洲熟女精品| 蜜臀久久99精品久久久久久成人小说 | 立川理惠无码一区二区| 火箭成精品视频884必出精品| 一区黄二区黄| 亚洲av影院在线观看| 丰满人妻-区二区三区免费看 | 天天做天天爱| 欧美国产有色电影| 99无码视频| 男女猛烈无遮掩视频免费软件| a片亚洲一本通视频| 狠狠穞A片一區二區三區| 1769一区| 亚洲欧美天| 欧美成人精品一区二区三区| 国产综合网站在线播放| 97碰| 无卡一区=区| 夜夜夜久久| www欧美性爱| 人人操人人干xxx| 狠狠97| 亚洲男人天堂2016| 欧美78p| 久久精品国产72国产精品福利| 国产一级高清免费观看| 日韩人妻精品| 国模不卡一本二本三电影| 91九色首页| 操逼不卡中文字幕| 成年无码动漫av片无尽在线| 黄页网站成人免费| 青青伊人加勒比海| 中文字幕加勒比海高清无码免费视频| 日本理论在线| 91精品国产日韩欧美综合| 精品高潮| 久久精品国产亚洲av水密被窝| 天天舔天天日天天射| 国产久久久9999| 无码色| 成年女人18级毛片毛片免费观看| 亚洲图片激情综合另类| 日韩成人高清一区二区| 日韩熟女精一区二区三区不卡| 加勒比五月天| 天天舔天天日天天射| 三级片大波波| 99.色网| 999狠狠综合| 色婷婷在线视频| 久久9视频| 免费看久久久性性| ?亚洲伊人伊成久久人综合网| 久久中文字幕一区不卡| 日本精品一级二级三级| 天天综合网91| 97超碰超碰| 淫荡网址| 凹凸视频在线一区二区| 久久97| 青娱乐休闲视频在线观看| 欧美色乱| 日韩视频中文字幕| 欧美v日韩v亚洲v最新在线| 久久久久久久97| 夜色91| 91中文字幕| 国产毛片毛片4p懂色| 插入逼91| 国产一区在线观看无码AV| 国产野战露脸在线播放| 一区二区三区成人高清视频| 夜间福利片1000无码| 欧美日韩在线国产在线| 嫖老熟女A片一二三区| 无码日韩网站| 狠狠狠狠狠| 韩国女主播青草福利视频| 欧美久久婷| 色九九九九| 久久久成人免费av电影| 欧美高清91| 欧美黄页| 欧美日韩色综合网| 99精品成人免费看| 操狠狠| 激情亚洲天堂| 淫穴高潮色图| 麻豆久久一区二区三区| 亚洲国产欧美一区二区潘金莲| 黄色一区二区秘书性感| 91精品黄在线观看| 嗯嗯嗯啊啊啊操的我好爽| 骚熟女吞| 深夜国产福利| 一区二区三区在线美女| 青青草天天亲夜夜操网| 97蜜桃综合| 亚洲十八禁止| 97综合国产| 国产99精品一区二区三区免费| 亚欧性爱ab| 啊好大好舒服| 色777999综合| 中英熟女操女| 在线v中文字幕一区二区三区| 小少妇| 2026国产精品视频| 久夜视频| 人妻中文字幕日韩电影| 亚洲天堂另类美腿| 精品国产乱码久久久久久日本公司| 欧美色图亚洲激情| 另类一区| 久久神马影院| 精品国产乱码久久久久久网站入口| 亚洲自拍天堂| 亚洲免费精品一区| 天天操福利视频综合网站| 亚洲AV成人无码一二三久久| 91啪啪视频| 天天超级碰碰碰| 无码一区免费在线不卡| 99视频自拍| 人人操人人射人人干| 伊人国产成人av网站| 国产成人精品亚洲日本| 金典av| 中文字幕在线免费观看2| 欧美婷婷五月天| 免费啊啊啊| 69XX一中文字幕人妻91| 性吧在线视频| 风间由美日韩欧美久久| 日韩欧美tv一区二区在线观看| 十八禁网站在线| 日本欧美不卡| 午夜色婷婷| 久久久久国产精品人妻aⅴ天堂| 1769国内精品视频| 欧美成不卡网| 国产精品96| 天天影视网综合少妇| 麻豆一区二区三区在线看| 免费作爱一级视频| 中文字幕人乱码中文字的预防方法| 一中国女人毛片水真多| 欧美日不卡| 精品999一区二区| 五月激情影院| 婷婷激情四射| 欧美日韩成人在线| 超碰97国产欧美| 99无码视频| 蜜臀网 一区| 一本道综合色图| 久久超碰com| 6080yy午夜理论三级一区二区三区无码| 春色综合免费| 美女自卫慰黄网站免费| 噜噜噜噜天天狠狠| 国产精品色| 日夜伊人网| 天天摸天天插天天日| 天天做天天爱| 色女99一级片在线观看| 操操逼视频| 大肉棒导航| 加勒比久久综合网高清| 91插B网站| 色婷婷99| 九九无码| 97日视频| 入口操逼网站| 亚洲综合网91| 嗯嗯嗯,草死我| 隔壁邻居波多野结衣中文字幕| 亚洲天堂人人妻| 免费av大片| 97日韩超碰超碰中文字幕| 91爱综合| 久久国产乱子伦精品免费女人| 色综合久久夜色精品国产天堂| 国产小黄片在线免费观看 | 精品性爱无码在线播放| 国产精品乱码久久久| 久视频在线观看| 久久国产热视频97电影| 欧美伊人电影| 久久久久久久久九九久孕交| 97人妻免费中文字幕| 久久久啊啊啊| 干b在线性社区| 亚洲熟女av日韩熟女| 中文字幕99999| 久操在97| 五月丁香影院| 国产精品美女久久久久AⅤ国产馆| 欧美日韩精品青青| 116美女午夜| japan日本高清乱xxxx| 欧美 色 亚洲| 狠综合网| 国产精品久久久亚洲一区| 99国产精品视频尤物| www欧美91| 狠狠躁天天躁日日躁| 久久九九网| 俄罗斯一区二区视频在线观看| 中日韩久久久免费看| ,国产乱人伦精品一区二区三区| 亚洲色色探花| 视频一区二区免费在线| 干b网| 超碰人妻中文在线| 99精品视频在线观看| 美国人人操人人操| 男人的天堂 在线一区| 天天爽入口| 香蕉久久精品| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 骚乳在线| 久热这里| 91精品无码人妻系列| 亚洲一区日韩精品中文字幕| 五月天日日操夜夜操| 天天干天天日天天射黄色片| 色色99| 999国产精品999| 中国少妇XXXX做受| 伊人网免费视频| 97超碰色色| 欧美伊人电影| 好色美女九七第一页| 97天天弄| 自拍二页| 国产精品久久久蜜臀| 玖玖视频在线资源一区二区三区| 伊人女女资源在线观看| 日本三级A片网站com| 色呦呦国产精品免费看| av天堂电影网| 啊啊啊啊免费视频| 亚洲色图欧美色图在线播放| 综合91网| 嗯嗯啊好大| 99xav| 啊啊啊啊啊好大好舒服想要| 神马久久久久眼| 色女女女导航| 美女尤物福利视频| 色九九九九久| 激情小说五月天| 丁香五月激情综合| 99热久| av天堂影视中文在字幕在线中文| www.超碰在线| 97色碰| 男人天堂2019亚洲| 亚洲少妇色| 97亚洲国产影视| 富二代亚洲精品99| 欧亚第一综合网| 国产午夜视频| 欧美传媒一区| 久久久久久免费电影| 风间由美日韩欧美久久| 清纯唯美激情| 久久精品一区二区三区四区五区| 欧美激情一区| 激情天天视频| 国产51色综合久久免费| 亚洲1区2区三区高清中文字幕| 国产欧美岛国精品一区| 亚洲欧美国产成人综合不卡| 亚洲 欧美 手机在线观看| 精品成人av一区二区三区在线| 无套内射性感少妇视频| 婷婷五月天补不补| 97这里都是精品| 激情视频一二三| 少妇高潮喷水无套久久久久久| 精品少妇一区二区三区| 欧美性91| 日韩黄色片子| 欧美日韩大陆黑人少妇99| 精品人妻一区二区免费蜜桃视频| 91中出视频| 亚洲伊人成综合成人网| 人妻丰满熟妇一区二区三| 无码日韩人妻av一| 激情综合五月| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 秋霞影音一区二区三区| 91久久婷婷| 91精品人妻一区二区三区蜜桃臀| 亚洲视频二区 | 国产精品久久久久亚洲av| 亚洲日韩成人性爱视频| 丰满人妻一区二区三区四| 亚洲国产精品成人综合| av橘色网站| 国产馆| 天天看天天干| 亚洲av影院在线观看| 老女人爆菊| 在线小视频| 97亚洲综合影院| 日韩欧美午夜视频在线| 人妻加勒比东京热| 激情四射五月天| 日韩精品区二区三区不卡| 国产精品色色| 粉嫩AV一区夜夜嗨| 中文字幕视频二区| 久久精品日韩| 精品精品精品| 一区二三区四区视频大全套| 78超碰| 成人福利视频网| 天天弄欧美| 日韩精品一二三| 日韩卡一卡二卡三在线| 99青草| 9精品久久久久| 天天艹天天日| 婷婷三区| 94色色电影网| 精品中文字幕一区二区l - 百度| 国产精品经典一卡久久久| 亚洲成人AB| 欧美极品性爱天天射| 日韩中字av一区| 一区二区视频在看| 日韩性爱电影一区| 欧美熟妇亚洲版| 欧美呦呦性爱| 精品国产自在在线99| 91色夜| 色爱综合网| 91精品免费| 欧美一级久久久久久久大片动画| 久久9精品视频| 国产综合久久久麻桃个| 婷婷五月激情综合| 青青草中出视频 | 天天影视综合网欧美精品| 5252色欧美在线男人的天堂| 人妻一区视频| 欧美久久人妻少妇一区二区| 日本1区2区不卡视频| 日韩一999精品| 青娱乐休闲视频在线观看| 国产原创自拍| 国产精品久久久久久久久久久久久久| 亚洲最大网站av| 欧美在线|亚洲| 欧美v亚洲v日韩v最新在线二区| 99热18这里只有精品| 一区二区三区成人高清视频| 亚洲涩涩| 91爆操视频| 骚货 中文字幕 av| 欧美性爱另类综合| 巨乳特殊服务按摩| 丝袜 亚洲 偷拍| 大香蕉综合网| 亚洲s在线观看| 日韩免费簧片| 欧美色网| 又黄又爽在线观看视频| 国产精品香蕉| 黄色小说亚洲| 日本成人A片网站| 是还免费视频1727我| A 天堂在线观看视频| 久久熟女精品不卡一区| 色色五月丁香| 97视频在线看| 日韩av色图综合| 亚洲精品国产熟女久久久久久| 精品中文一区二区| 亚洲欧美日韩综合在线尤物| 哈哈操电影| 日韩天堂av电影在线观看| 91人妻最真实刺激绿帽| 97精品中文字幕| 爱我干综合| 九九综合九九综合| 中文字幕综合人妻| 日本日逼视频网| 精品91日日夜夜超清资源| 中文字幕片| 欧美久久人人网| 亚洲a色| 精品视频专区| 精品伊人久久久大香线蕉小说| 亚洲熟女诱惑| 18岁禁 茉莉成人久久| 免费在线观看国内色片网站网址| 偷拍导航视频网站| 大香蕉天天看妹子| 日本在线播放不卡一区| 乱欲视频| 久久久91福利姬| 天天欧美色| 手机在线视频国内精品| 亚洲欧美在线丝袜| 乱老熟女一区二区三区| 超碰人人干| 欧美自拍偷拍综合图片| 91老妇女| 久久內射| 一区二区偷拍拍视频| 国产欧美精选自拍一区| 日韩精品一区二区人人人| 亚洲中文电影| 男人的天堂亚洲| 中国东北熟女老太婆内谢| 久久春色| 爱丝福利| 久久久性爱视频| 亚洲天堂综合AV| 中文字幕狠狠玩| 性饥渴少妇av无码毛片| 99操逼| 校园春色宗合网| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 2017天天插| 操死我了啊啊啊| 亚洲天堂自拍| 欧美日韩国产中文超碰| 操逼网站视频漫画国产| av爱爱爱| 亚洲欧美999| 婷婷国产精品一区二区| 欧美玖玖爱免费玖玖| 91蜜桃婷婷狠狠久久综合9色| 天天综合官网| 青青伊人这里只有精品| 久久综合乱子伦国产免费| 亚洲高清无码免费观看视频| 无码高清国产AV| 亚洲欧美国产中文视频| 91精品久久久久| 欧美线天码中字| 久久九精品| 操一区| 男人的天堂激情| 六六久久日韩不卡| 超碰碰碰碰| 国产精品国产拍高清AV| 亚洲日韩精品一区视频在线| 18禁在线视频| 成人五月天丁香激情综合| 欧美天天干| 精人妻一区二区三区| 小电影欧美91| 骚日日av| 亚洲久草AV色图| 激情久久日韩精品中文字幕麻豆| 亚州色国| 亚洲精品1区| 超碰1997| 啊啊啊啊啊啊啊网址在线观看| 91挑色欧美| 综合97亚洲| 欧美性综合| 国产熟女高潮一区二区三区| 日韩精品一区,二区 九九...老司机| 蜜桃久久久久久久久久久久 | 麻豆成人影音在线| 国产精品播放| 在线97视频| 大奶啊啊好爽| 97免费视频在线| 神马麻豆福利院| 欧洲精品一级二级精品综合视频综合| 久久女人| 啊啊啊好想要| 乱伦熟女专区| 亚洲综合另类小说色区亚洲成av人片在www | 美國A片|