一、用赋值的方法可以扩展一个已知的数组:

arr= 1:1:4;

arr(8)=6;

此时,arr = 1 2 3 4 0 0 0 6

arrNew=arr;

此时arrNew = 1 2 3 4 0 0 0 6。

由上面可以看出,每一次扩展数组,都要经过以下
步骤:第一步,创建一个新数组。第二步,把旧数组的元素复制到新数组当中。第三步,把
扩展的元素写入新数组。第四步,删除旧数组。对于大数组来说这些步骤是相当耗时的。

二、用向量法

好的编程习惯
在循环执行开始之前 ,总是要预先分配一个数组,这样能大大增加循环运行的速度。

所以
用向量语句它的执行速度非常快。
向量算法的缺点是需要很大的内存, 因为一些间接的数组需要创建。 这就是向量算法的一个小缺点,但它的执行速度比 for 循环算法快得多。
在 MATLAB 中, 用向量算法代替循环的算法的过程称之为向量化(vectorization)。 向量化能够改进许多的 MATLAB 程序。

比较向量算法和循环
为了比较循环和向量算法执行所用的时间,用两种方法编程并测试三个运算所花的时
间。
1.用 for 循环计算 1 到 10000 的之间每一个整数的平方,而事先不初始化平方数组。
2.用 for 循环计算 1 到 10000 的之间每一个整数的平方,而事先初始化平方数组。
3.用向量算法计算 1 到 10000 的之间每一个整数的平方。
答案:
这个程序必须用上面提供的三种方式计算出 1 到 10000 之间的每一个整数的平方, 并测
试每一个种算法的时间。测试时间要用到 MATLAB 函数 tic 和 toc。tic 函数复位内建计时器,
而 toc 函数则从最后一次调用 tic 以秒开始计时。
因为在许多的计算机中它的时间钟是相当粗略的, 所以有必要多运行几次以获得相应的
平均数。

% 脚本文件 times.m
%
% 目标:
% 该程序用三种方式测量整数从1到10000的平方所用的时间
%
% . 用for循环,没有初始化平方数组
% . 用for循环,初始化平方数组
% . 用向量法计算
%
%版本记录
% 日期 编者 变化描述
% ==== ========== =====================
% -- : 泡泡 源代码
%
% 定义变量
% ii, jj 循环索引
% average1 用方式1计算所用平均时间
% average2 用方式2计算所用平均时间
% average3 用方式3计算所用平均时间
% maxcount 循环次数
% square 平方数组
%
%-----------------------------------------------------------------
% for循环:没有初始化平方数组
% 循环1次
% 因为很慢
maxcount = ; % 1次重复
tic; % 计时开始
for jj = :maxcount
clear square % 把以前是这个变量名的清除
for ii = :
square(ii) = ii^; % 平方计算
end
end
average1 = (toc)/maxcount; % 所用时间平均值 %-----------------------------------------------------------------
% for循环:初始化平方数组
% 循环10次
% 对比作用
maxcount = ; % 10次重复
tic; % 计时开始
for jj = :maxcount
clear square % Clear变量
square = zeros(,); % 初始化平方数组,全部值为0
for ii = :
square(ii) = ii^; % 平方计算
end
end
average2 = (toc)/maxcount; % 所用时间平均值 %-----------------------------------------------------------------
% 用向量法计算
% 循环100次
% 因为非常快
maxcount = ; % 100次重复
tic; % 计时开始
for jj = :maxcount
clear square % Clear变量
ii = :; % Set up vector
square = ii.^; % 平方计算
end
average3 = (toc)/maxcount; % 所用时间平均值
% 结果对比显示
fprintf('for 循环 / 没有初始化数组 = %8.4f\n', average1);
fprintf('for 循环/ 初始化数组 = %8.4f\n', average2);
fprintf('用向量法 = %8.4f\n', average3);

结果:

可以看到,用初始化了数组合向量法几乎不耗费时间

好的编程习惯
那种既可以用向量可以解决的问题,也可以用循环解决的问题,最好用向量解决,这
是因为向量执行的速度快。

matlab 向量法建数组(推荐)的更多相关文章

  1. MATLAB元胞数组

    MATLAB元胞数组 元胞数组: 元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵.组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元 ...

  2. matlab的cell数组

    matlab的cell数组 元胞数组: 元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵.组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每 ...

  3. Matlab计算机视觉/图像处理工具箱推荐

    Matlab计算机视觉/图像处理工具箱推荐 转载http://cvnote.info/matlab-cv-ip-toolbox/ 计算机视觉/图像处理研究中经常要用到Matlab,虽然其自带了图像处理 ...

  4. MATLAB 向量

    MATLAB 向量: 1.MATLAB 行向量: 创建行向量括在方括号中的元素的集合,用空格或逗号分隔的元素. 2.MATLAB 列向量: 创建列向量括在方括号中的元素的集合,使用分号来分隔的元素. ...

  5. Matlab 之 字符串数组查找

    Matlab的优势在于向量操作,字符串操作往往费时费力,但是如果能充分利用Matlab自带的一些函数,也可以取得不错的效果.下面就介绍一下字符串数组查找的小技巧. 字符串数组我通常会选择应用cell格 ...

  6. matlab矩阵与数组

    数组运算:数与数组加减:k+/-A %k加或减A的每个元素数组乘数组: A.*B %对应元素相乘数组乘方: A.^k %A的每个元素k次方:k.^A,分别以k为底A的各元素为指数求幂值数除以数组: k ...

  7. matlab之细胞数组

    学习matlab的一个博客:https://blog.csdn.net/smf0504/article/details/51814362 Matlab从5.0版开始引入了一种新的数据类型—细胞( ce ...

  8. matlab 读取输入数组

    In an assignment A(I) = B, the number of elements in B and I must be the same MATLAB:index_assign_el ...

  9. matlab中的数组与矩阵

    今天做图像处理时,看到一个矩阵的处理,简要谈谈下面几段代码: 首先是介绍矩阵(说明:在matlab中无是数组还是矩阵都是按列来存储的) 首先是一些特殊矩阵的建立 zeros(m,n)%建立全0矩阵 o ...

随机推荐

  1. 一、Hbase的安装

    一.Hbase配置 这个是我从网上找的一个版本,网上说配置成功. 先决条件: (1)hadoop的版本与hbase的版本要对应,主要是hadoop目录下的hadoop-core-1.0.4.jar的版 ...

  2. Handler和Message以及Looper之间的三角关系

    说到Handler想必大家都经常用到,在非UI线程更新UI那可是利器,用起来也非常容易上手 从使用上来说,我们只需要关注sendMessage和handleMessage即可 所以我们先从Handle ...

  3. windows下查找指定端口被哪个程序占用

    在Windows环境下,用netstat命令查看某个端口号是否占用,为哪个进程所占用. eg.查看端口号为61078被哪个程序占用 1.查看端口号为61079被哪个PID所占用:Netstat –an ...

  4. Vue.js与angular在数据实现的思考

    Vue.js,其简洁的API以及活跃的社区,对于打算从angular转向Vue还是挺友好的,打算最近一段时间去整理下Vue自己的一些思考,加深下对于此的印象. Vue与Angular同属于MVVM框架 ...

  5. UIImageView控件

    UIImageView是用于显示图像的,在iOS开发中,我们无需专门去写什么代码,不需要检查设备的类型,只需要把1x.2x.3x的图像添加到项目中,图像视图会自动的在正确的时间加载正确的图像. (1) ...

  6. 【转】10个重要的Linux ps命令实战

    Linux作为Unix的衍生操作系统,Linux内建有查看当前进程的工具ps.这个工具能在命令行中使用. PS 命令是什么 查看它的man手册可以看到,ps命令能够给出当前系统中进程的快照.它能捕获系 ...

  7. 自然语言处理高手_相关资源_开源项目(比如:分词,word2vec等)

    (1) 中科院自动化所的博士,用神经网络做自然语言处理:http://licstar.net (2) 分词项目:https://github.com/fxsjy/jieba(3) 清华大学搞的中文分词 ...

  8. Memcached源码分析之memcached.h

    //memcached.h //返回在item中data字段key的地址,即把指针指向key #define ITEM_key(item) (((char*)&((item)->data ...

  9. IOS中单例NSUserDefaults的使用(转)

    一.了解NSUserDefaults以及它可以直接存储的类型 http://my.oschina.net/u/1245365/blog/294449 NSUserDefaults是一个单例,在整个程序 ...

  10. ubuntu 16.04 php 安装curl方法

    先查看自己的php是否已经安装了curl.方法如下:1.在web服务器目录( Ubuntu下的通常为 /var/www )新建test.php文件2.编辑文件,键入下面一行代码:<?php ph ...