亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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)指南 寫(xiě)MATLAB程序這件事我前后寫(xiě)了小十年。從最早用它做課程作業(yè)里的矩陣運(yùn)算到后來(lái)處理現(xiàn)場(chǎng)采集的傳感器數(shù)據(jù)、搭建仿真模型、甚至給別人做工具包可以說(shuō)MATLAB既是入門(mén)最容易的工具也是最能暴露一個(gè)人編程習(xí)慣的鏡子。這個(gè)系列走到第六篇我想認(rèn)真聊聊“程序設(shè)計(jì)”本身——不是某個(gè)工具箱的某個(gè)函數(shù)怎么用而是當(dāng)你面對(duì)一個(gè)需要長(zhǎng)期維護(hù)、反復(fù)修改、甚至交給別人接著開(kāi)發(fā)的MATLAB項(xiàng)目時(shí)那些真正決定成敗的細(xì)節(jié)。這篇文章適合兩類(lèi)人一類(lèi)是已經(jīng)能用MATLAB跑通腳本、但總覺(jué)得代碼“能跑但很亂”的進(jìn)階初學(xué)者另一類(lèi)是在其他語(yǔ)言里寫(xiě)慣了嚴(yán)謹(jǐn)程序、剛轉(zhuǎn)到MATLAB、被它的靈活弄得不知所措的開(kāi)發(fā)者。我會(huì)從工程級(jí)代碼的組織方式、控制流與向量化的取舍、調(diào)試與性能優(yōu)化的實(shí)際手法、再到把代碼變成可復(fù)用工具的封裝思路一層層講清楚。里面所有經(jīng)驗(yàn)都來(lái)自實(shí)際項(xiàng)目中的試錯(cuò)和總結(jié)不是教科書(shū)里的標(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ù)。我見(jiàn)過(guò)太多人把幾百行代碼全塞在一個(gè)腳本里跑完一遍工作區(qū)堆了幾十個(gè)變量第二天想改個(gè)參數(shù)得從頭捋一遍才知道哪個(gè)變量是干嘛的。這就是典型的“腳本思維”。工程級(jí)代碼的第一步就是學(xué)會(huì)把功能拆成函數(shù)。舉個(gè)實(shí)際例子。假設(shè)你要處理一批實(shí)驗(yàn)數(shù)據(jù)讀取文件、去噪、提取特征、畫(huà)圖。用腳本寫(xiě)全部擠在一起用函數(shù)拆結(jié)構(gòu)就非常清楚data loadData(experiment_01.csv); % 讀取 clean removeNoise(data, median, 5); % 去噪 features extractFeatures(clean); % 提取特征 plotResults(clean, features); % 畫(huà)圖每一行都是一個(gè)函數(shù)調(diào)用你不需要關(guān)注每個(gè)函數(shù)內(nèi)部怎么實(shí)現(xiàn)只要確認(rèn)輸入輸出符合約定就行。這就是模塊化的意義代碼的可讀性不再靠“讀”而是靠“信任函數(shù)名”。1.2 函數(shù)編寫(xiě)的關(guān)鍵約定寫(xiě)函數(shù)的時(shí)候有幾個(gè)習(xí)慣我從第三年才開(kāi)始堅(jiān)持但一旦堅(jiān)持下來(lái)返工率直線下降每個(gè)函數(shù)只做一件事。如果一個(gè)函數(shù)既做濾波又做特征提取還順帶畫(huà)圖那它就是一個(gè)定時(shí)炸彈。日后任何一處需要修改你都得小心翼翼生怕動(dòng)一個(gè)功能影響另一個(gè)。參數(shù)校驗(yàn)要放在函數(shù)開(kāi)頭。別嫌麻煩。validateattributes或assert幾行代碼能省掉你后面排查半天“為什么這次數(shù)據(jù)跑出來(lái)全是NaN”的時(shí)間。優(yōu)先使用varargin做可選參數(shù)。配合inputParser你可以寫(xiě)出非常優(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í)候可以寫(xiě)成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ū)塊開(kāi)頭寫(xiě)一行注釋說(shuō)明這段在干什么。配合section標(biāo)題整個(gè)腳本就像一本書(shū)的目錄。命名方面我個(gè)人遵循一套簡(jiǎn)單約定函數(shù)名用小寫(xiě)開(kāi)頭的駝峰式如extractFeatures變量名用有意義的英文單詞組合如rawData、filteredSignal常量用全大寫(xiě)如SAMPLE_RATE。這套規(guī)范堅(jiān)持了五年最大的好處是代碼不需要額外文檔——名字自己就是文檔。提示不要在變量名里用拼音縮寫(xiě)。當(dāng)時(shí)寫(xiě)的時(shí)候覺(jué)得方便三個(gè)月后你自己都看不懂“sjcl”是“數(shù)據(jù)處理”還是“時(shí)間序列”。英文單詞即使拼錯(cuò)也比拼音好猜。2. 控制流與向量化告別又慢又蠢的 for 循環(huán)2.1 條件分支和循環(huán)的進(jìn)階寫(xiě)法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依賴(lài)條件終止、次數(shù)不確定的用while。但無(wú)論是哪種只要能用向量化解決的問(wèn)題就盡量不要用循環(huán)解決。下面這個(gè)對(duì)比我做了無(wú)數(shù)次每次都能把人說(shuō)服n 1e6; data randn(n, 1); % 循環(huán)寫(xiě)法 tic; result1 zeros(n, 1); for i 1:n result1(i) data(i)^2 3*data(i) 1; end toc; % 向量化寫(xiě)法 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)化的你寫(xiě)data.^2 3*data 1時(shí)它調(diào)用的是一連串經(jīng)過(guò)手冊(cè)級(jí)優(yōu)化的C/Fortran例程而你自己寫(xiě)循環(huán)則是讓MATLAB解釋器逐行逐元素地跑——兩者根本不在一個(gè)量級(jí)。2.2 向量化的核心邏輯逐元素操作與邏輯索引向量化的本質(zhì)是把“對(duì)每個(gè)元素做操作”的思維替換成“對(duì)整個(gè)數(shù)組做操作”的思維。一開(kāi)始不習(xí)慣很正常我花了很久才真正轉(zhuǎn)變過(guò)來(lái)。但掌握兩個(gè)工具后多數(shù)場(chǎng)景都能直接化解第一個(gè)是逐元素操作符。.*、./、.^這三個(gè)帶點(diǎn)的運(yùn)算符專(zhuān)門(mén)處理數(shù)組逐元素運(yùn)算。寫(xiě)多項(xiàng)式擬合、歸一化、逐點(diǎn)運(yùn)算它們都是主力。很多人容易漏掉點(diǎn)號(hào)寫(xiě)成data^2就會(huì)報(bào)錯(cuò)——因?yàn)閊是矩陣乘冪和逐元素的.^是兩回事。這個(gè)坑每個(gè)MATLAB用戶(hù)都踩過(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); % 滿(mǎn)足條件的結(jié)果這種寫(xiě)法不僅代碼短而且執(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ò)程依賴(lài)前一步結(jié)果比如遞推公式、狀態(tài)轉(zhuǎn)移這種天然就是串行的硬要向量化只能寫(xiě)出極其晦澀的代碼。循環(huán)體內(nèi)有復(fù)雜的條件分支每個(gè)分支的處理邏輯完全不同強(qiáng)行向量化需要構(gòu)造多層掩碼矩陣可讀性急劇下降。需要在循環(huán)中動(dòng)態(tài)改變數(shù)組大小——當(dāng)然這種情況建議先預(yù)分配見(jiàn)后面的性能優(yōu)化部分。我個(gè)人的判斷標(biāo)準(zhǔn)很簡(jiǎn)單如果量級(jí)在百萬(wàn)級(jí)以上且沒(méi)有數(shù)據(jù)依賴(lài)優(yōu)先向量化如果量級(jí)小、邏輯復(fù)雜、或者涉及串行遞推直接用循環(huán)不用糾結(jié)。代碼清晰和運(yùn)行速度之間需要你自己權(quán)衡不必走極端。3. 調(diào)試實(shí)戰(zhàn)讓代碼自己“說(shuō)話(huà)”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è)置條件”輸入類(lèi)似i 158或者更復(fù)雜的條件abs(value - 0.618) 1e-6滿(mǎn)足條件時(shí)程序才會(huì)暫停。這個(gè)功能能讓排查效率提升一個(gè)量級(jí)。我在處理長(zhǎng)循環(huán)里的偶發(fā)錯(cuò)誤時(shí)幾乎全靠它。注意條件斷點(diǎn)里的表達(dá)式每次迭代都會(huì)求值所以不要寫(xiě)太復(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í)。我見(jiàn)過(guò)太多人憑感覺(jué)優(yōu)化代碼——把某個(gè)函數(shù)重寫(xiě)了一遍結(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ò)誤類(lèi)型、錯(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ù)最前面檢查輸入一旦不滿(mǎn)足要求就用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ù)組開(kāi)始 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)化就是寫(xiě)更快的代碼其實(shí)真正重要的是選更快的算法。同樣的功能用不同的數(shù)據(jù)結(jié)構(gòu)和算法性能差距可以超過(guò)100倍。舉一個(gè)常見(jiàn)場(chǎng)景判斷一個(gè)元素是否屬于集合。用ismember解決很快但如果你在一個(gè)大循環(huán)里反復(fù)調(diào)用ismember耗時(shí)可能還是會(huì)超出預(yù)期。更好的方式是先把集合轉(zhuǎn)成containers.Map查詢(xún)是常數(shù)時(shí)間keys {alpha, beta, gamma, delta}; map containers.Map(keys, 1:length(keys)); % 在循環(huán)里快速查詢(xún) for i 1:numel(testList) if isKey(map, testList{i}) % 命中邏輯 end end這個(gè)例子的核心思想是用哈希結(jié)構(gòu)替代線性查找把查詢(xún)復(fù)雜度從O(n)降到O(1)。很多MATLAB性能問(wèn)題追根溯源都是算法復(fù)雜度的問(wèn)題而不是代碼寫(xiě)法的問(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ù)量下甚至可能差好幾倍。所以寫(xiě)循環(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ǔ)開(kāi)銷(xiāo)和訪問(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à)值很多人一聽(tīng)說(shuō)“面向?qū)ο蟆本陀X(jué)得是其他語(yǔ)言的專(zhuān)利MATLAB只是“數(shù)學(xué)計(jì)算器”。其實(shí)MATLAB的classdef機(jī)制相當(dāng)成熟而且在復(fù)雜項(xiàng)目中價(jià)值非常大。什么場(chǎng)景適合用面向?qū)ο笪业呐袛鄻?biāo)準(zhǔn)是當(dāng)你有多個(gè)變量需要捆綁在一起處理并且有一組操作總是圍繞它們展開(kāi)時(shí)。比如你處理的是一個(gè)采集信號(hào)它包含數(shù)據(jù)、采樣率、時(shí)間戳、采集通道名稱(chēng)、單位等屬性同時(shí)需要對(duì)它做濾波、去基線、切片、畫(huà)圖等操作。用結(jié)構(gòu)體固然可以但每次都要手動(dòng)帶上參數(shù)而且無(wú)法保證“數(shù)據(jù)”和“采樣率”來(lái)自同一個(gè)信號(hào)——類(lèi)可以把這一切封裝起來(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(); % 直接畫(huà)圖這樣的代碼不僅整潔而且降低了調(diào)用方的認(rèn)知負(fù)擔(dān)——不需要把一堆分散的參數(shù)到處傳遞。對(duì)于項(xiàng)目越來(lái)越大、協(xié)作人數(shù)越來(lái)越多的情況類(lèi)定義本身就是一份活文檔。5.2 什么時(shí)候不要過(guò)度設(shè)計(jì)但我也遇到過(guò)不少人把MATLAB寫(xiě)成了Java為每個(gè)小功能建一個(gè)類(lèi)接口抽象了三層。這是另一條彎路。MATLAB的核心優(yōu)勢(shì)是快速開(kāi)發(fā)、快速驗(yàn)證過(guò)度設(shè)計(jì)會(huì)讓簡(jiǎn)單問(wèn)題復(fù)雜化。我個(gè)人的原則是腳本階段允許“臟亂快”一旦代碼要整個(gè)項(xiàng)目復(fù)用、要交給別人維護(hù)才重構(gòu)為函數(shù)或類(lèi)。這個(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ū)、儀表盤(pán)等控件然后為每個(gè)控件編寫(xiě)回調(diào)函數(shù)。我之前做過(guò)一個(gè)數(shù)據(jù)查看工具用了不到半天時(shí)間就把一個(gè)命令行腳本包裝成了帶界面的小程序左邊是文件列表中間是曲線圖右邊是參數(shù)面板底部是日志輸出。App Designer在生成代碼時(shí)自動(dòng)產(chǎn)生一個(gè)類(lèi)定義基于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的用戶(hù)使用。這一步完成之后“程序”就變成了真正的“工具”。6. 避坑實(shí)錄我從無(wú)數(shù)次實(shí)驗(yàn)里撿出來(lái)的經(jīng)驗(yàn)6.1 常見(jiàn)問(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條是我見(jiàn)過(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ù)單位。一旦你寫(xiě)for i 1:10循環(huán)結(jié)束后i就被改成了數(shù)值10。如果后面某個(gè)表達(dá)式需要用到虛數(shù)單位你就得到莫名其妙的結(jié)果。建議循環(huán)變量用idx、k這類(lèi)名稱(chēng)徹底避開(kāi)沖突。腳本里直接硬編碼文件路徑。今天在自己機(jī)器上能跑明天換臺(tái)電腦就崩潰。把輸入路徑放在腳本開(kāi)頭集中管理甚至用input交互式獲取才是工程級(jí)的做法。調(diào)試代碼忘刪。disp、keyboard、plot臨時(shí)驗(yàn)證代碼留在函數(shù)里導(dǎo)致輸出亂成一團(tuán)。我建議臨時(shí)驗(yàn)證代碼統(tǒng)一用一個(gè)變量控制開(kāi)關(guān)比如DEBUG true;發(fā)布前改成false。忽視矩陣方向。讀入數(shù)據(jù)時(shí)行是樣本、列是特征還是反過(guò)來(lái)的這個(gè)約定如果前后不統(tǒng)一程序跑出來(lái)全是錯(cuò)的還特別難查。建議在數(shù)據(jù)讀取后立刻驗(yàn)證size并寫(xiě)注釋。循環(huán)里動(dòng)態(tài)命名變量。比如eval([var, num2str(i), data])。這類(lèi)代碼讀起來(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ù)類(lèi)型。所有循環(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í)早在寫(xiě)代碼的階段就可以通過(guò)習(xí)慣避免。6.4 一個(gè)真實(shí)的排查案例最后分享一個(gè)我印象深刻的排查經(jīng)歷。某次處理一批實(shí)測(cè)振動(dòng)數(shù)據(jù)程序跑得挺快但結(jié)果曲線總有毛刺。一開(kāi)始我懷疑是傳感器本身的問(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)是在去噪步驟里我寫(xiě)的窗口參數(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ì)比的方法能快速定位。寫(xiě)MATLAB這些年我最深的體會(huì)是這個(gè)工具真正強(qiáng)大的地方不在于它會(huì)多少內(nèi)置函數(shù)而在于你能不能把一段只服務(wù)于當(dāng)前任務(wù)的“草稿代碼”錘煉成結(jié)構(gòu)清晰、性能達(dá)標(biāo)、邊界健壯的“工程代碼”。第六篇講的這些內(nèi)容不會(huì)讓你一次就寫(xiě)出完美程序但至少下次再面對(duì)一個(gè)復(fù)雜任務(wù)時(shí)你會(huì)知道從哪里下手組織代碼、用什么手段定位問(wèn)題、在哪一步去追求性能。照著這些思路去寫(xiě)代碼自己會(huì)變得越來(lái)越干凈。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
啊啊啊操一区| 亚洲天堂中文字| 国产一区二区三区不卡手机在线| 强奸乱伦中文字幕AV| 亚洲国产另类在线中文| 欧洲视频在线| 综合欧美色图| 加勒比人妻综合| 麻豆天美国美国产| 国产极品999| 太久视频| 在线毛片片免费观看| 精品无码久久| 久久国产精品视频| 天天性射网| 日日摸日日碰| 怡红院怡春院| 国产极品999| 天天色香欲综合网| 欧美性爱97超碰| 超碰成人最新最好看| 激情文学88| 自拍啪啪视频| 久久久久婷婷精品av电影| 最新av在线| www.高清无码诱惑一区.com | 青草影院内射高潮| 亚洲91大片| 久久久久久久久久黄色网| 嗯嗯嗯啊啊啊在线免费观看| 国模少妇一区二区三区| 久久九九99| 一块操欧美| 无套内射性感少妇视频| 无码日韩网站| 人妻少妇久久久| 婷婷五月天激情网| 久久午夜伦| 乱伦AVxx| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒| 国产精品自在线发布| 久久国产免费激情视频| 岛国激情视频在线观看| 99啪啪| 一级A片女人高潮叫床| 加勒比久久综合网高清| 69人妻精品一区二区绯色| 亚洲欲色9532548967一区| 久久精品欧美一区蜜桃| 厕所偷拍在线| 粉嫩久久久久| 少妇精品| 日韩欧美中文| 男人天堂2012| 夜夜高潮夜夜爽| 人妻大相焦在线| 久久久久久久六六| 亚洲综合色图欧美| 国产一区二区三区高清视频| 欧美v亚洲v日韩v最新在线二区| 欧日a| 五月丁香综合网| 亭亭丁香激情| 日夜尻逼网| 久久久精品,3| A级片日韩欧美国产欧美视频精选观看 | 超碰欧美| 国产 丝袜 欧美中文 另类| 久久精品亚洲成a人天堂| 69人妻精品一区二区绯色| 青青11操操操操操操操操| 偷拍超碰| 啊啊啊啊无码| 国产精品熟女九色九色蜜臀| 亚洲五月丁香花狠狠干一区二区三区 | 免费成人在线熟妇网| 蜜臀网 一区| 久久婷婷电影网| 最近2019中文字幕国语免费版| 五月色综合| 九九九九日本| 91精品老女人| 九月丁香综合网| 91精品人妻一区二区三区蜜桃臀| 天天操妹子| 青青免费在线视频一区| 蜜色网色哟哟| 精品十八在线观看| 国产亚洲精品农村妇女 | 大香蕉综合网| 国产欧美一区激情交| 99r九九| 亚洲青青草| 亚洲国产激情国产av| 欧美亚洲美少妇一区二区| 97超碰欧美手机| 逼逼逼逼操操操操操操操操操午夜剧场 | 欧美黑人猛交春色影视大全| 青青草在线视频播放器| www.久久99| 亚洲素人综合| 色婷婷导航| 伊人色综合欧美| 亚洲色图欧美一区二区不卡| 97香蕉碰碰人妻国产欧美| 69视频福利导航| 国内毛片热久久思思热| 野狼激情网| 欧色网址| 日本久久99| 日韩亚洲97| 无码人妻精品一区二区三区99不卡| 五月婷婷无码| 欧美激情久操网| 人人摸人人干| 美女久久久久久久久久久| 大香蕉综合网| 加勒比aⅴ| 嗯啊不要在线观看嗯啊| 色色九区| 800zy一区二区| 免费观看网黄| 骚熟女吞| 黄色高清无码无码破解免费暗网 | 久久香蕉综合一本到3atv| 国产欧美日韩臀| 国产精品不卡一区二区三区av| 日韩97超碰中文字幕| 全国男人天堂网| 91粉嫩萝控精品福利网站_精品影音先锋国| 亚洲国产亚洲天堂| 岛国成人av在线播放网址| 午夜精品久久999热蜜桃介男人用| 日韩国产乱子伦App| 中文字幕二区| 激情五月婷| 猛猛干| www.91色综合| 日韩免费av片高清无码| 精品一久久久| 亚洲欧美精品福利在线| 国产一级αv免费看片| 97网址97| 啊啊啊啊啊啊在线观看| 99婷婷一区二区| 亚洲男人天堂手机版| 日本一级黄色电影| 久久男人的天堂| 97国产亚洲中文在线| 逼逼逼逼操操操操操操操操操午夜剧场| 久久99999| 亚洲av淫乱| 九久久九九久视频| 香蕉99秘 精品一区丁香| 久久男人的天堂| 日本蜜桃| 伊人影院中文字幕| 天堂无码精品国产久| 91欧美巨乳| 夜夜肏2021| 先锋影音av先锋一区| 欧美日韩亚洲五月天婷婷| 丁香九月激情啪| 综合第一页| 欧美夜色| 精品国产乱码久久久久久影片| 欧美高清18A片| 加勒比综合a∨| 91大学精品激情戏| 国模精品一区二区三区苹果色戒| 国产精品成人无码a v毛片| 天天日天天干天天摸天天操| 日本不卡二三区| 2020视频1区2区3区| 在线观看成人性爱免费小视频| 精品国产乱码久久久久久久| 久久熟女久| 五月天黄色av| 久久九九综合| 一级久久性爱视频| 最新三级网址| 日本韩国国产精品一区| 无码粉嫩白虎一线天b区| 欧美体内射精| 免费男人的天堂| 1024午夜激情男人的天堂| 91天天日| 床上啊啊啊一区二区三区| 女人被男人桶爽视频网站| 久久日本熟妇熟色一区| 久热伊人| 天天久久| 国内一级精品| 高清无码学生妹高潮| 国产美女激情| 99久久精品国产系列| 黄色交缠性感爆操91国产精品免费一区二区三区| 国产av热热色| 超碰无码五月97| 亚洲在高跟鞋自慰久久在色线| 亚洲国产欧美日韩人妻日中文| 欧美网站免费| 99热这里是精品| 久久久久国产精品片区无码直播| 波多野结衣先锋影音| 亚洲av国产av综合av卡| 亚洲天天做日日做天天谢日日| 超碰成人人人爽人人爽| 亚洲欧美另类激情小说| 国产精品白领在线观看| 五月天我淫我色av| 高清国产成人无码| 超碰在线香蕉| 国产精品自在线发布| 国产精品探花视频| 久久久久国产精品片区无码直播 | 亚洲激情天堂网| AV老汉| 久久女同性恋一二区| 人妻熟女一区二区三区在线| 久久久久幕乱码| 色欧美色交综合| 欧美se综合| 天天噜| 精品蜜乳AV免费观看| 在线视频免费观看午夜| 小视频国产| 久久美女国产| 色爱综合网| 97视频网站在线观看| 白丝AV网站| 欧美91丝袜| 色噜噜日韩精品| 亚洲色人| 国产强奸超碰AV| 亚洲综合激情五月久久| 91 国产丝袜在线放观看| 歐美性天天| 亚洲激情深爱文学小说网站| 欧美超碰在线| 欧美综合娱乐久久| 人人爱操| 蜜臀久久久| 玖玖无码超碰| 欧美人与性动交a美精品| 国产CHASE男男GAYGA 毛多色婷婷| 国产少妇肉丝在线观看| 婷婷15月天青娱乐| 超碰成人人人爽人人爽| 3p国产欧美99热| 久悠悠av| 麻豆天天躁天天揉揉AV| 懂色av色欲av蜜臀av| 色色五月婷| 啊啊啊啊啊好大好舒服想要| 九九九九AV| 久久社区一区二区三区| 丁香五月天婷婷姐| 欧美资源| 久久久com| 日韩精品人妻系列无码天堂| 日本在线伊人啪啪| 国产一区二区欧美日本| 国产AV人人 夜夜人人澡| 国产国产亚洲一二三久久| 十八禁视频一区二区| 狠狠综合网| 国产AV人人夜夜澡人人爽麻豆| 网友自拍第一页| 国产偷拍自拍在线视频| 久久视频,这里只有精品| 男啪女色黄无遮挡免费观看| 丁香五月色情| 亚洲 欧美 日本 国内 首页| 亚洲乱伦图片视频| 欧美曰韩国产精品| 日韩欧美性爱电影在线观看| 99热这里只有精品99| 无码人妻精品一区二区三区九九| 在线免费观看高清无码视频| 精产国品一区二三产品| 国产一区二区三区免费视频在性观看| 丰满翘臀美女影院视频| 国产精品久久| 人妻密肉在线观看| 亚洲欧美天堂| 男人天堂.AB| 欧美成人精品一区| 亚洲激情在线| 亚洲精品电影| 中文字幕一区 二区三四五 区日 日骚| 中出后入| 国产乱伦一二三区| 99999久久精| 丁香五月天堂网| 抽插一区二区视频| 日本人妻一区二区| 国内精品嫩模A∨私拍小视频| 这里只有精品久久| 亚洲欧美情色| 91骚妇| 一类av片在线看| 日韩中文字幕2020| 久久久久亚洲Aⅴ无码| 日本人妻伦在线中文字幕| 亚洲综合色男人网| 人人性爱视频免费| 欧色性第一页| 综合激情婷婷| 免费观看成人www精品视频| 嗯阿好爽好紧| 亚洲一区中文字幕一区| 九热久| 草b在线| 在线看的av| 本道在线| 大胆91| 日本一区二区三区免费观看| 欧美亚洲宗合色性图| 天天色播亚洲综合网站| 91综合网站| 亚洲三级网址久久最新| 色色色色网站| 9色国产精品一区粉嫩| 国产乱人妻精品入口| 国产操逼逼网| 欧美精品三级黄片| 久久超碰av在线| 首页亚洲国产高跟丝袜诱惑视频| 91精品国产91久久福利| 国产乱码久久久| 97久久久久久久精| 啪一啪免费视频| 综合亚洲欧美| 亚洲熟女偷拍在线观看| 日韩三四五区| 色久桃花影院在线观看| 天天综合青苹果| 国产精品欧美激在线| 中文字幕性感少妇av| 成年无码动漫av片无尽在线| 欧美色图片欧美色图| 吻戏激情性巴克| 亚洲精品尤物yw在线影院| 麻豆一区二区AV天美| 亚洲天堂第一页| 一区二区三区机械有限公司| 九月丁香婷婷色| 大色综合| 97久操| 日夜干射色啊| 免费看美国人人爽,人人操| 中文字幕奈奈美被公侵犯| 欧美亚洲激情| 激情欧美97| 嗯嗯啊啊的视频| 中文字幕在线观看AV| 思思热免费视频观看| 性久久久| 欧美夜夜草视频| 日产精品久久久一区二区| 日本一天色道久久久精品视频| 久久婷色| 亚洲最大网站av| 免费视频在线观看啊啊啊啊啊| 欧美少妇性爱网站| 亚洲一曲日韩精品| 丁香五六月啪啪| 操国产高清| 夜夜爽夜夜爽| 凌辱美少妇久久aV| 日欧毛片久久| 久久久禁| 中文一区在线日| 蜜臀久久一区二区| 96AV精品| 日本精品国产视频| 撸撸成人在线视频| 亚洲美女 晚间男人天堂 | 人妻久久一区二区三区| 五月丁香黄色网| 久久精品国产亚洲AV先锋| 精品玖九九久| 欧美性暴力| 久久超碰日韩精品| 天天噜| 天久久久噜噜噜久久国产精品爽爽| 欧美综色欧| 狠狠色五月亚洲91| 夜夜爽夜夜高潮夜夜爽| 91制服丝袜| 91网站18+| 综合色区偷拍| 97综合久久| 热思思免费视频| 免费黄色片。| 97任你吞精| 亚洲精品亚洲人成人网| 九色PORNY9l原创自拍| 免费黄色片子| 久jiu久神马影院| 日日骚 av| 黑人干亚洲| 91色欧美| 探花一区二区三| 黄色欧美性爱视频| 东京日日夜夜| 男人精品天堂一区| 天天综合网日韩| 极品综合| 99热这里是精品| av操操不卡| 欧洲精品久久| 欧美综合另类| 日韩卡一卡二卡三在线| 青青草日韩无码| 自拍视频大全亚洲专媒视频/一区二区三区 | 后入式五六区| 亚洲一级黄色毛片| 免费精品福利在线观看| 四月丁香婷婷| 久久华人网| 欧美天天射| 天天操夜夜嗨| 天天弄欧美| 欧美第五页| 亚洲成人黄色在线观看| 欧美一级A片在线看视频性色| 亚洲成人碰碰| 天天激色| 中日韩免费看男女操逼大全| 黄aaaaaaaaaaaaaaaaaa色网站| 97久精品| 蜜桃天美传媒AV一区二区三区| 偷拍偷窥与盗摄视频专区| 色欲日韩欧美在线一区| 97超碰热线| 大香蕉人妻久久| 精品无码不卡视频| 青娱乐av在线| 国产精品久久久亚洲第一牛牛_在线观看| 成年无码动漫av片无尽在线 | 裸模AV女优| www.91视频网| 白 大 人妻 区 在线| 欧美日韩小说| 国产理论视频在线播放| 草蕉影视亚洲无码| 狠狠操狠狠操操| 婷婷色色网| 国内一区二区三区| 欧美系列在线一区二区| 亚洲欧洲第二视频在线观看色图| 国产一区在线看| 中国一区二区亚洲人妻| 亚洲综合贴图91| 一级做a爰片性色毛片久久| 丝袜 亚洲 偷拍| 欧成人在线| 7777欧美成是人在线观看| 色眯眯av| 亚洲砖码砖专无区2023| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 爱妻综合网| 超碰国产精品久| 欧美人妻色| 精品无码一区二区三区| 国产性刺激| www.亚洲黄色| oumeisetupian| 国产黄色视频久久| 亚洲欧洲色情高清| 美国一区二区三区视频| 日韩一级二级三级免费看完整版国语版 | 欧州一区二区三区四区| 超碰国产情侣自拍网| 欧美组图日韩亚洲中文字幕| 欧美一区二区情色| 人人干黄色| 91精品婷婷国产综合久久竹菊| 欧美性爱无码一区二区三区| 色香伊人| 久久人人看| 亚洲在线a| 久久久久久久久久久久久久久性生活视频| 久久久久国产精品久久久| 欧美大香蕉在线观看| 国产狂喷潮在线精品| 精品小视频在线| 日韩精品黄片免费观看| 人妻熟妇一区二区三区| 99热这里只有精| 午夜男女爽爽爽影院视频| 久久久久久久久久久久久久久久9| 老熟女乱子伦中文字幕一区二区| 蜜桃精品一区二区三区久在线| 小视频国产| 日韩二级| 国产精品自在线发布| 91性网| av亚洲天堂资源网站| 91小视频| 国产主播福利| 久久99干一本高清| 熟女在线视频| 亚洲av影院在线观看| 欧美色视| 五月天亚洲网| 色综合潮| 国产这里只有精品| 人妻中文字幕精品无码| 91天天综合日韩欧美| 久久香蕉超碰97国产精品| 使劲用力艹少妇视频一区二区| 自偷自拍的亚洲视频| 亚洲春色一区二区三区| 久久精品国产97欧美精品亚洲 | 日韩欧美偷拍美女视频| 91在线|亚| 欧美日韩国产高清在线一二三区| 亚洲成人贴图| 性感美女啊啊啊在线| 91人妻视频在线| 粉嫩绯色AV一区二区在线| 欧美AAAA黄片| 日韩性色| 玖玖综合视频| 久久精品国产精品| 中美日韩毛片| 天天综合91在线| 成人性爱全视频观看| av一区二区三区不卡| 欧美激情高清性猛交| 亚洲男人的天堂在线看| 超碰97资源中文字幕| 九九99精品视频在线观看| 欧美日韩插逼视频| 欧美色就是色| 美女91在线| 国内一区二区三区| 美女网站黄页| 四季AV一区二区凹凸精品小说| 久久久精品国产亚洲伊人| ?亚洲伊人伊成久久人综合网| 无码高清少妇久久| 翔田千里A片一区二区| 精品对白久久不卡| 国产一线二线三线av| 乱操9999| 女同性恋中文字幕| 97国产中文| 青青草国产一区二区三区| 九九九九精品一区| 亚洲欧美日韩电影网站一区 | 少妇特黄一区二区三区| 97干综合网| 久草精品一区| 91美女国产在线| 夜色97| 久久久久久少妇| 色哟哟AV| 综合色区偷拍| 蜜臀久久99精品久久久电影| 成人麻豆av电影网站| 美女91AV| 99re只有精品| 亚洲第一二区另类图| 色爱综合网欧美| 99999精品成人| 天堂麻豆天美| 亭亭在线资源| 99re视频在线播放青草| 日韩欧美传媒一区国产| 毛片一区二区| 1级黄色夫妻对换性交免费看| 黄色操人| 亚洲色图欧美视频| 麻豆人妻精品一区二区| 美腿色图| 久操影视| 无码78| 欧美片第一页| 在线观看精品国产免费| 国产玖玖| 天天天天做夜夜夜夜做| 黄色免费网| 盗摄女人妻在线| 人人操AV| 国产熟妇一区二区| 日韩精品人妻中文字幕不卡乱码| 久久久999| 日韩无码黄色片| 99热这里只有精品99| 69综合网| 国产精品久久久亚洲第一牛牛_在线观看| 亚洲一二三四区| 少妇无码av专区线| 一本久道久久综合狠狠爱| 69精品人人人人| 9久久久久久| 久久久久免费看少妇A片特黄| 欧美在线播放aaaa| 欧美性爱网97| 日韩综合色图| 欧美日韩第一页| 91伊人影视综合| 91欧美www| 丁香六月激情| 久久国色天香香蕉| 亚洲综合色图欧美| 亚洲制服aⅴ中文字幕| 亚洲精品视频二区| 啊啊啊啊,啊啊好多水| 操人人| 精品丰满人妻一区二区三区免费观| 欧美性爱一区二区三区四区| 在线五区| 久久超碰97| 欧美精品精品一区二区| 日日夜夜天天| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 殴美在线AⅤ| 乱理日韩中文| 91性片| 色99在线| 欧美人妻熟女在线| 激情国产乱伦Av| 啊啊啊啊啊好大好舒服想要| 九九碰九九爱97超碰| 亚洲另类电影| 国产精品农村妇女精品| 成年人性爱日韩| 性交一区二区在线播放| 一级日本牲交大片好爽在线看| 亚洲另类久操网| 久久精品国产亚洲av水密被窝| 91精品伊人久久久大香线蕉91| 黄资源| 嫩呦国产一区二区三区AV| 久久久久久久久久久久久久久乱码| 91综合熟女| 色五月婷婷在线| 操一对老熟妇爽上天视频| 睡产熟女乱伦| 久久久涩| 欧美午夜精品久久久久久3D| 日韩一级二级三级| 人妻熟女午夜精品在线| 97天天日| 精品久久久久瑟瑟| 日韩免费福利在线观看| 熟妇艹鸡八| www亚洲免费| 美女黑人91神马| 午夜120视频在线观看| 劲爆欧美人妖三区91| 看一级特黄a大一片| 久久人妻无码毛片A片麻豆| 无码精品一区二区三区潘金莲| 国产欧美成人精品| 青草av在线| 男人的天堂com| 蜜臀久久一区二区| 性久久久| 91欧美丝袜| 久久99精品九九久久久婷婷| 日韩人妻制服丝袜av| 91色s| 亚洲激情网一二三四区| 亚洲春色一区二区三区| 日韩美女,国产传媒,视频一区| 91高清无码下载| 人妻另类| 中文字幕乱码人妻一区二区三区,99精品 | 性影在线视频| 亚洲激情欧美色图| 亚洲情色婷婷五月天| 欧美激情性久久久久久| 亚洲色综网| 国产超碰国产97| 天天草夜夜草高潮片| 久热网| 91 国产丝袜在线放观看| 国产AV精久久| 精品黄色电影| 日韩中文字幕宗合在线| 中文字幕 人妻不满 在线视频| 人人操人人干xxx| 亚洲AV色图一区| 高潮内射在线| 国产一区二区啪啪视频| 熟妇综合一区二区三区| 精品无码产区一区二| 午夜精品一区二区三区三上悠亚| 国产精品久久久久久久AV大片 | 屌色在线97视频| 秋霞一级A片黄色视频| 97精品视频在线播放| 熟妇人妻一区二区三区| 午夜黄色免费在线观看| 久久久久亚洲熟妇熟女| 青草精品视频一日本久久久久网站| 中文字幕视频2区| 五月丁香婷婷综合网| 东京热视频网| 久久系列| 亚洲影视第一页| 神马久久久久久久久久| 男人的天堂亚洲| 3p国产色噜噜一区| 亚洲h片在线免费观看| 久久超碰日韩精品| 色噜噜人妻av中文字幕| 中文幕97| 久久亚州高清| 欧美在线官网| 五月花婷婷| 91 亚洲 欧美 日韩 国产 综合| 亚欧无码线免费观看视频| 91色插| 蜜桃AV天堂| 欧美日本不卡| 成人在线午夜视频一区| 啊啊啊不要啊啊受不了了视频在线| 91婷婷伊人狠人| 99热| 丁香五月综合| www色婷婷| 91精品黄在线观看| 日本亚洲熟女视频| 天天色综亚洲91污| 亚洲成人久久一区二区| 亚洲伊人a线观看视频| 黑人精品XXX一区一二区| 26uuu久久| 亚洲无码偷拍| 被窝影院午夜看片无码| 亚洲精品一二牛牛| 100啪啪视频大全| 亚洲乱码精品一区二区| 亚洲在线网站| 男人的天堂午夜av| 日本狂喷奶水在线播放212| 一级二级三级黑人无码| AV天堂国产| 亚洲AV麻豆Aⅴ无码电影一| 翔田千里AV无码秘 三区| 久久精品一区二区一8| 亚洲精品久久久久毛片A片拉屎| 欧美亚洲情色| 中国AV美女| 黄片视频,下载| 国产三级多多影院2022国产AA一级毛片无码| 久久久久亚洲三级电影| 无码 黑人一区二区三区| 超碰国产精品久| 高跟丝袜AV专区国产| 911粉嫩人妻| 97五月天| 超碰在线人妻不卡| 制服丝袜第二页| 欧美日韩狠狠爱| 加勒比综合网| ji熟女.com| 久久99人妖视频国产| 人妻AV在线| 国产久久日韩网站导航| 91亚洲丝袜| 久久一区二区蜜桃| 国产精品成人久久一区二区三区| 欧美强奸乱能| 亚洲一区二区麻豆影院| 台湾肥佬网一区二区三区| 日本精品久久久久久久| 欧美翘臀视频网站一区二区三区| 亚洲欧美国产va在线播放频| 国产精品久久久久亚洲av| 99视频在线| 手机不卡视频不卡在线一二三区| 97超碰中文| 九九久久久| 99久久婷婷丁香| 9久综合网| 精品中文日韩字幕视频| 亚洲资源站| 特级毛片特黄久久免费看 | 男人的天堂VA| 亚洲另类小说卡通动漫| 天天操综合网| 久操在97| 精品视频一二三中文| 综合免费无码中文| 国产人妻精品久久久一区二区三区 | 自拍盗摄一区| 五月天婷婷社区| 岛国色情视频在线观看| 九色97| 丰满熟女人妻一区二区三五十一路| 亚洲av青草久久一区二区| 另类一区| 国产精品欧美激在线| 欧美 亚洲 在线| 尤物国产一区在线观看| 国产黄色动态精品| 亚洲91在线| 婷婷91| 亚洲天堂电影网| 精品国产乱码| 在线女人91| 97免费视频在线| 婷婷AV一区二区三区| 人妻 制服 日韩 中文 在线| 超碰成人人人爽人人爽| 综合婷婷| 97精品一区二区视频在线观看| 韩日性爱av| 东京热av男人的天堂| 日韩在线国产字幕| 久久99热这里只频精品6学生| 香蕉大久久久| 少妇高潮特黄A片| 人人超碰在线观看黄| 国产欧美在线观看免费观看| 熟女精品一区二区三区| 日韩无码第3页| 抽插无码高清一区| 中文字幕无码不卡啪啪| 51一区二区三区| 超碰天天操| 日韩人妻有码免费视频| 青娱乐大香蕉| 樱花蜜乳av| 日韩中文字幕2020| 日本免费专区| 美女91av| 囯产乱伦一区二区三女 | 一区二区影院| 激情小说亚洲视频| 亚洲av影音先锋| 一级黄碟| 无码少妇精品一区二区60岁老人| asc国产精品| 90后性网国产欧美| 欧美亚洲特P| 麻豆 欧美 日韩| 2017av无码免费无线播| 天天综合网久久ww| 色黄污美女啪啪啪免费网站| 国产25页| 久久精品国产72国产精品福利| 久久禁| 人人人人人人少妇| 26uuu最新| 久草热制服丝袜在线观看 | 97超碰色中文字幕| 99re在线观看| 日韩成人无码| 久久大精品乱码视频人妻熟女| 乱欲一区二区| 国产精品一区二区三区四区五区| 欧美淫穴| 国产精品亚洲一级av第二区| 本道在线| 精品国产嫩穴视频| 日韩无码三级影院| 亚洲AV不卡在线观看| www.夜夜| 一级岛国大片| 精品熟妇视频一区二区| 欧美久久九九| 人妻81p| 96一区二区| 天天影视射综合网| 亚洲超碰在线| 亚洲天堂五月天国产| 日本精品九九九| 熟妇熟女亚洲天堂网| 亚洲 欧美 偷拍 唯美| 99热在线只有精品| 色91综合网| 亚洲国产无码精品首页久久久| 亚洲97| 中文日韩欧美熟| 香蕉一区二区三区在线视频| 国产一区二区三区导航| 激情五月天中文字幕色| 国产和美国毛片| 富二代亚洲精品99| 日韩性爱网址| 久久性爱视频99| 人妻第一页| 超碰久久精品| 人人摸人人干| 丁香五月av| 浪人综合网| 亚洲另类欧美精品| 91丝袜人妻| 欧洲精品久久| 亚洲第一页欧美| 天天爽夜夜操| 熟女字幕| 久久久久久久久久久免费精品| 中国91AV| 99蜜月精品久久| 诱惑人妻欧美一区在线播放| 极品色社| 婷婷久久久| 日韩av在线免费网站| 亚洲高清无毛一区二区| 精品天堂| 国产精品另类一区大香蕉| 欧美色图成人网一区二区| 欧美性天天影视| 久久婷婷五月天| 韩国一级做A片免费的| 91深夜夜| 亚洲无码成人精品| 伊人热综合| 色姑娘综合网| 91 丝袜在线播放| 欧美综合综合| 久久婷婷一区| 9.1小视频| 久久9精品网站| 污电影在线观看| 在线免费试看60秒| 97一本大道亚洲一区| 久久亚洲不卡一区二区三区| 综精品久久久aaaa| 91女神在线视频| 一牛影视久久久一区二区三区| 亚洲少妇色| 激情一区二区三区在线观看| 欧美激情综合色综合啪啪五月| 亚洲国产日韩欧美熟妇在线| 大香蕉黄色一区| 午夜色婷婷| 日本久久网| 99激情| 日韩pv中文| 欧亚乱色熟一区二区三四区| 亚洲成人一二三区| 超碰 av 女人天堂| 人妻黑丝袜电影| 天天天操天天天爱| 一本大道久| 精品一区二区三区蜜桃| 国产精品久久久久婷婷二区次| 欧美96在线|欧| 久久久四区| 肏逼视频日本| 影音先锋日本一区二区| 综合在线导航一区| 国内毛片国产专区二| 日本 欧美 国产一区| 丁香五月天啪啪| 无码91| 久久国语| 97在线视频观看免费| 99re98| 久久久国产av美女私房| 中文字幕一区二区韩| 成视频在线观看免费看| 久久这里都是精品| 日日夜夜草草草| 日韩欧美天堂| 亚洲超碰97| 久久五月天婷婷丁香中文字幕| 成人性爱高清视频免费看| 天天干少妇| 欧美少妇性乱| 人妻激情视频| 精品无码一区二区三区| 新婚人妻扶着粗大强行坐下| 欧美操人| 国产精品suv一区| 欧成人在线| 欧美性爱18观看| 人人考人人摸人人干| 无码欧美有限公司| 大干人妻| 久久久久亚洲熟妇熟女| 日本www操操操| 厕所偷拍在线| 蜜臀一二三区| 日本熟女不卡视频| 午夜男女爽爽爽在线视频 | 福利社区午夜一区二区| 人妻中文在线| 色欲色香天天天综合网www-亚洲综合国| 亚洲第二页| 99在线免费公开视频| 色综合99| 欧美黑人91| 一级性爱视频免费观看| 九月丁香| 四虎在线观看网站| 国产91福利小视频在线观看| 自慰白浆在线观看| 内射黑人| 97在线免费| 人妻av在线| 秋霞福利网| 日韩黄片影院| 日本熟妇一区二区三区| 一区二区不卡免费| 国产精品蜜臀久久久久无码AV| 五月天激情婷婷| 999九九九九国产动| 欧美综合国产精品久久丁香| 屌逼传媒| 日天天九九天堂666| 国语国产操逼伊人AV网| 日日骚 av| 无码久久国产| 欧美在线官网| 男人精品区| 五月婷婷丁香六月| 欧美久久人体| 国产av美女被艹的乱叫| 国产精品久久久999| 激情天天视频| 97综合国产精品高潮久久| 91骚熟女| 九九热免费国产视频婷婷伊人五月| AV中文字幕三四五| 丰满的三级少妇欧美久久久| 久久人体一区二区| 国产精品自在线发布| 亚洲十八禁止| 中国东北熟女老太婆内谢| 狠色婷婷久久一区二区三区_| 国产又猛又粗又爽又黄| yirendaxiangjiashipin| 国产精品电影大全| 荡小穴在线观看| 超碰97人妻| 大香蕉综合| 久久精品人人做人人看| 亚洲情色图片区| 亚洲囯产精品女人久久久| juliaann丝袜大战黑鬼| 国产精品熟女九色九色蜜臀| 欧美色图 人妻| 色狠狠 - 百度| 久久精品日韩专区免费观看| 国产精品爽爽va在线观看98| 91热色| 91超级碰| 日韩有码专区| 久久久久久大| 国产在线视频二区| 人妻少妇精品久久久| 国产精品蜜乳AV| 极品出轨视频网站| 久久午夜伦| 久久中文字幕不卡人妻| 久操 高清| 玖玖玖玖精品国产剧情| 撸无码不卡免费视频| 亚州色交| 久热精品在线国产| 风骚少妇视频中文字幕| 九九热AV| 国产成人亚洲精品无码最新在线| 密臀AV在线| 国产精品午夜高潮呻吟久久av| 91狠狠综合久久| 黄色成品网站| 国产精品一二三在线看| 超碰色大香蕉| 亚洲情色一区三区| 日韩,欧美,中文在线| 欧美日韩1234| 欧美在线l亚洲| 日本三级大片| 久久精品人人做人人看| 亚洲影视第一页| 超碰97精品在线| 欧美日韩一区二区三区四区蜜桃| 99久久久| 成人精品一区二区三区| 六月天婷婷| 亚洲色欲天天天堂色欲网女| 91高清日| 99热导航| 五月天婷婷综合网| 亚洲欧美自拍偷拍| 人人妻人人澡人人爽久久av| 91久久堂| 夜色五月天| 欧美日本一区二区a人| 中文字幕99999| 亚洲AV色图一区| 一区二区三区日韩欧美| 亚洲精品亚洲人成人网| 久久伊人亚洲AV无码网站| 少妇三p| 亚洲熟女乱综合一区二区三区 | 99无码狠狠久久| 骚日日av| 夜精品久无码| 亚洲精品一区二区三区新线路| 人妻乱仑一区二区三区| 国产精品日本无码A片| 欧美激情1区| 丝袜天堂网| 男人天堂日日夜夜| 蜜桃久久综合视频| 日本精品第一视频在'| 不卡av在线中文字幕| 国产一区在线播放| 撸无码不卡免费视频| 国产欧美成人精品| 日本999精品视频| 香蕉在线一区二区三区| 亚洲欧美日韩综合在线尤物| 精品成人亚洲午夜电影| 无码不卡亚洲成?人片| 男同专区一区二区三区在线| 懂色av中文字幕一区二区三区天美 | 大香蕉性欧美| 亚洲国产亚洲天堂| 超碰97久久观看| AV丝袜少妇| 欧美色图亚洲特色| 熟妇熟女一区二三区| 97超碰美国| 亚 欧 美 综合| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 99日精品欧美国产| 久久肏大逼| 操逼网免费无码视频| 欧美性爱日韩性爱| 国产日韩区| 精品人妻一区二区视频| 精品一区二区三区蜜桃| 天天操天天射天天日| 黄色香蕉视频网站一区| 日本久久女同性恋视频| 2017亚洲天堂| 91亚洲欧洲| 黄骗免费网站| 久久伊人最新网址视频| 亚洲九九九| 激情婷婷综合久久| 一区二区三区免费视频入口| 久久AV无码AV| 欧美国产精品久久九九| 亚洲国产美女久久久久 | 国产视频三区四区| 成人AV素股で擦久久| 极品粉嫩一区二区| 日韩国产十八禁| 欧美伦乱爱| 啊啊啊好疼| 风韵犹存大大大大香蕉 | 97超碰色屌| 97爱b| 嗯~啊~快点 死我视频免费看网站|