亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于元胞數(shù)據(jù)的多維數(shù)據(jù)傳遞機(jī)制

        2016-01-24 02:28:28尹云旺2
        北京測(cè)繪 2016年2期
        關(guān)鍵詞:數(shù)據(jù)類型元胞數(shù)組

        王 珊 尹云旺2

        (1.山東科技大學(xué)測(cè)繪科學(xué)與工程學(xué)院,山東 青島266590;2.西安大地測(cè)繪股份有限公司,陜西 西安710000)

        1 前言

        文章開始之前,需要特殊說明一點(diǎn),在其他編程語言中,也有元胞數(shù)組的概念,但是本文中所闡述的元胞數(shù)組,是基于MATLAB軟件介紹的,它為 MATLAB中的一種數(shù)據(jù)類型[1],相關(guān)特性可能與其他軟件有所不同。

        軟件開發(fā)過程中,我們有時(shí)需要一次傳遞多維數(shù)據(jù)到一個(gè)循環(huán)中,普通數(shù)據(jù)傳遞一次只能傳遞一個(gè)數(shù)據(jù),但是使用元胞,我們可以一次傳遞多維數(shù)據(jù)。與結(jié)構(gòu)體通過域名訪問元素值不同,元胞數(shù)組通過索引方式訪問包含在其中的元素值,正是由于元胞數(shù)組的這種特性,使得其與循環(huán)聯(lián)合使用時(shí),可以解決很多軟件開發(fā)過程中遇到的問題。

        2 元胞數(shù)組

        2.1 元胞數(shù)組的定義

        元胞數(shù)組由元胞組成,是一個(gè)能夠存放任何數(shù)據(jù)類型、任意大小數(shù)組的數(shù)據(jù)容器。同一個(gè)元胞數(shù)組中各元胞的內(nèi)容可以不同,可以是MATLAB或用戶自定義的數(shù)據(jù)類型[2]。每個(gè)數(shù)據(jù)類型可以有任意維數(shù)。能夠混合存儲(chǔ)任意類型和大小的數(shù)組是元胞數(shù)組一個(gè)重要功能,另外一個(gè)經(jīng)常使用元胞的方式是存儲(chǔ)不同長(zhǎng)度的字符串。像MATLAB中其他數(shù)組一樣,元胞數(shù)組必須為矩形形狀,也就是說元胞數(shù)組的任何一維的每行每列都必須相等。了解結(jié)構(gòu)體的人可能知道,結(jié)構(gòu)體和元胞數(shù)組設(shè)計(jì)和目的都很相似,都提供了一種存儲(chǔ)不同大小和不同類型數(shù)據(jù)的方式,兩者最大的區(qū)別在于結(jié)構(gòu)體使用域名來訪問存儲(chǔ)在其中的數(shù)據(jù),而元胞數(shù)組則使用數(shù)字索引,所以我們可以利用索引的方法,一次傳遞多維數(shù)據(jù)。

        2.2 元胞數(shù)組操作

        為方便理解本文中的相關(guān)例子,我們先來講解一下元胞數(shù)組的一些基本操作。元胞數(shù)組的操作包括元胞數(shù)組創(chuàng)建、元胞數(shù)組連接、元胞數(shù)組索引、元胞數(shù)組賦值和從元胞數(shù)組返回值等內(nèi)容[3],這里僅對(duì)元胞數(shù)組創(chuàng)建、賦值和索引等內(nèi)容做簡(jiǎn)要介紹。

        2.2.1 創(chuàng)建元胞數(shù)組

        在MATLAB中創(chuàng)建元胞數(shù)組和創(chuàng)建其他類型數(shù)組類似,主要的區(qū)別是創(chuàng)建元胞數(shù)組時(shí)需要使用花括號(hào)將元胞數(shù)組的內(nèi)容或索引括起來,而創(chuàng)建其他類型數(shù)組時(shí)使用的為中括號(hào)[4]。元胞數(shù)組中的每行元素用逗號(hào)或空格符做間隔,各列之間用分號(hào)做間隔。在賦值運(yùn)算符“=”右邊用花括號(hào)“{}”來為一個(gè)元胞數(shù)組賦值。例如使用命令A(yù)={B C D E}就可以創(chuàng)建一個(gè)包含B C D E不同數(shù)據(jù)類型的元胞數(shù)組,可以在一個(gè)元胞數(shù)組中嵌套另一個(gè)元胞數(shù)組。也可以使用函數(shù)cell來創(chuàng)建元胞數(shù)組,運(yùn)行cell(m,n)命令就創(chuàng)建了一個(gè)大小為m×n的元胞數(shù)組。

        2.2.2 元胞數(shù)組索引

        當(dāng)處理元胞數(shù)組時(shí),你可以選擇元胞數(shù)組中整個(gè)元胞來進(jìn)行操作,也可以選擇元胞中的內(nèi)容進(jìn)行操作,第一種方式是元胞索引,第二種方式是內(nèi)容索引[5]。x=C(s)命令返回元胞數(shù)組C中下標(biāo)為s的元胞,x=C{s}命令返回元胞數(shù)組C中下標(biāo)為s的內(nèi)容,假設(shè)一個(gè)元胞數(shù)組包含多個(gè)元胞,每個(gè)元胞又為包含一個(gè)或多個(gè)元素的數(shù)組,則x=C{s}(t)命令返回元胞數(shù)組中由下標(biāo)s指定的元胞中的下標(biāo)為t的數(shù)組元素。

        在這里列舉一個(gè)簡(jiǎn)單的例子來說明上述操作,首先在MATLAB軟件中輸入下面兩條語句:

        data(1,:)= {'張 三'49 {58 98.3 [103 72]}};

        data(2,:)= {'李 四'25 {60 98.6 [105 75]}};

        這兩個(gè)語句創(chuàng)建了一個(gè)2×3的元胞數(shù)組data,其中每一行中又嵌套了一個(gè)元胞數(shù)組,嵌套的元胞數(shù)組中最后一個(gè)元素為一個(gè)向量。使用a=data(2,1)命令時(shí),命令窗口返回a=’李四’;使用b=data{2,1}命令時(shí),命令窗口返回b=李四;使用c=data{2,3}(1)命令時(shí),命令窗口返回c=[60],使用d=data{2,3}{1}命令時(shí),命令窗口返回d=60,各運(yùn)算結(jié)果如圖1所示。

        使用whos命令來查看各個(gè)變量的類型,如圖2所示,變量a、c和data的類型為元胞,變量b的類型為字符型,變量d的類型為數(shù)值型。

        3 使用元胞傳遞數(shù)組數(shù)據(jù)實(shí)例

        在使用MATLAB編程時(shí),我們可能遇到這樣的情況,需要將一個(gè)以上的數(shù)據(jù)同時(shí)傳遞到一個(gè)循環(huán)中。例如,在編程繪制礦區(qū)工作面示意圖時(shí),假設(shè)一個(gè)礦區(qū)有三個(gè)矩形工作面。

        如果直接使用Plot命令繪圖這三個(gè)工作面,那么三個(gè)工作面首尾則由一條直線連接在一起,如下圖圖3所示:

        為了解決上述問題帶來的不便,一種較理想的方法是使用一個(gè)循環(huán)每次繪制一個(gè)工作面。但是,這就需要一次傳遞給循環(huán)一個(gè)工作面的數(shù)據(jù)。使用其他類型數(shù)據(jù)傳遞給循環(huán)時(shí),一次只能傳遞一個(gè)數(shù)據(jù)。由于元胞值可以為一個(gè)數(shù)組,每個(gè)元胞又可以整體看做一個(gè)數(shù)據(jù),同時(shí)可以使用索引尋訪每個(gè)元素值,所以我們可以在循環(huán)中一次傳遞多維數(shù)據(jù),從而實(shí)現(xiàn)上述需求。編寫MATLAB程序如下:

        [filename,pathname]=uigetfile(...

        {'*.txt';'*.xls';'*.xlsx';'*.xlsb';'*.xlsm';...

        '*.*'},...

        '坐標(biāo)數(shù)據(jù)導(dǎo)入');

        if isequal([filename,pathname],[0,0])

        return

        else

        File=fullfile(pathname,filename);

        end %讀取工作面坐標(biāo)文件

        gzmzb=importdata(File);%導(dǎo)入工作面坐標(biāo)數(shù)據(jù)到變量gzmzb中

        x_gzm=gzmzb(:,1);%將變量gzmzb第一列數(shù)據(jù)賦值給x_gzm

        y_gzm=gzmzb(:,2);%將變量gzmzb第二列數(shù)據(jù)賦值給y_gzm

        k=length(x_gzm)/4;%根據(jù)坐標(biāo)求工作面數(shù)目

        gzm=cell(k,1);%創(chuàng)建和工作面數(shù)目相等的元胞數(shù)組

        gzm(:)={zeros(5,2)};%對(duì)元胞數(shù)組中每個(gè)元胞初始化

        jj=1;

        for mm=1:length(x_gzm)

        if mod(mm,4)==0

        gzm{jj}(1,1)=x_gzm(mm-3);

        gzm{jj}(2,1)=x_gzm(mm-2);

        gzm{jj}(3,1)=x_gzm(mm-1);

        gzm{jj}(4,1)=x_gzm(mm);

        gzm{jj}(5,1)=x_gzm(mm-3);

        gzm{jj}(1,2)=y_gzm(mm-3);

        gzm{jj}(2,2)=y_gzm(mm-2);

        gzm{jj}(3,2)=y_gzm(mm-1);

        gzm{jj}(4,2)=y_gzm(mm);

        gzm{jj}(5,2)=y_gzm(mm-3);

        jj=jj+1;

        end

        end %將4個(gè)坐標(biāo)組成一個(gè)工作面完整坐標(biāo),為了使工作面閉合,%添加第五個(gè)坐標(biāo),其值和第一個(gè)坐標(biāo)相等

        for nn=1:k

        plot(gzm{nn}(:,1),gzm{nn}(:,2),'-r','linewidth',2.5);

        hold on

        end %繪制工作面示意圖

        程序中使用cell(k,1)命令創(chuàng)建了一個(gè)大小為k×1的元胞數(shù)組,然后使用gzm(:)={zeros(5,2)}命令,將元胞數(shù)組中每個(gè)元胞的值初始化為5×2的全零數(shù)組,這樣做可以提高程序運(yùn)行速度,并防止發(fā)生內(nèi)存溢出錯(cuò)誤,最后使用循環(huán)將工作面坐標(biāo)賦值給每個(gè)元胞并繪圖。運(yùn)行該程序如圖4所示:

        4 結(jié)語

        MATLAB不僅功能強(qiáng),而且使用方便,易于掌握[6]。使用其他方式也可以實(shí)現(xiàn)同樣效果,但是使用元胞數(shù)組傳遞多維數(shù)據(jù)更方便、高效、直觀。元胞數(shù)組設(shè)計(jì)的目的就是為了存儲(chǔ)不同類型、不同大小的數(shù)據(jù),并通過索引來尋訪其中的值,所以元胞數(shù)組和循環(huán)的聯(lián)合使用,必定成為傳遞多維數(shù)據(jù)的一種理想方案。

        猜你喜歡
        數(shù)據(jù)類型元胞數(shù)組
        基于元胞機(jī)技術(shù)的碎冰模型構(gòu)建優(yōu)化方法
        JAVA稀疏矩陣算法
        詳談Java中的基本數(shù)據(jù)類型與引用數(shù)據(jù)類型
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型
        基于元胞自動(dòng)機(jī)下的交通事故路段仿真
        基于元胞傳輸模型的高速公路交通流仿真模型
        尋找勾股數(shù)組的歷程
        零邊界條件下二維元胞自動(dòng)機(jī)矩陣可逆性分析
        VB數(shù)組在for循環(huán)中的應(yīng)用
        考試周刊(2012年88期)2012-04-29 04:36:47
        91热国内精品永久免费观看| 欧美亅性猛交内射| 久久无码潮喷a片无码高潮| 无遮挡呻吟娇喘视频免费播放| 国产麻豆精品久久一二三| 久久久久久久98亚洲精品| 一本色道久久综合狠狠躁中文| 亚洲av一区二区在线| 成人性生交大片免费入口| 日本肥老妇色xxxxx日本老妇| 国产午夜精品久久久久免费视| 日本成人字幕在线不卡| 国产一区亚洲一区二区| 青青草成人免费在线视频| 东京热人妻系列无码专区| 久久夜色精品国产| 国产艳妇av在线出轨| 国产大学生自拍三级视频| 风韵人妻丰满熟妇老熟女视频| 狂野欧美性猛xxxx乱大交| 国产99久久久久久免费看| 国产成人av在线影院无毒| 国产一级一厂片内射视频播放 | 福利视频偷拍一区二区| 99re6在线视频精品免费| 亚洲精品乱码久久久久久金桔影视 | 色欲人妻综合aaaaa网| 成人无码一区二区三区网站| 久久久99精品视频| 日韩一区二区av伦理| 国产精品久久久福利| 亚洲日韩精品无码专区网站| 精品久久久久中文字幕APP| 日韩av一区二区在线观看| 人妻少妇被猛烈进入中文字幕| 黑森林福利视频导航| 日韩一区二区肥| 午夜av福利亚洲写真集| av在线播放男人天堂| 熟妇激情内射com| 女人体免费一区二区|