matlab元胞使用小记录

本文探讨了在MATLAB中使用cell2mat函数将cell数组转换为普通数组时的维度特性,并通过实验对比了使用cell数组与普通数组进行操作的速度差异。

-1-

在使用cell2mat将cell(n,1)转数组时发现,生成了一个n行的二维数组;

而转换cell(1,n)则会生成一维数组

-2-

在以下情况,使用元胞进行赋值速度更快,不知道其原理是什么,求大神看到了解释下呗。

c=[1 5 1 5 1];                  %电价
tz=[20 20 20 20 20];            %电价时段
[~,tzn]=size(tz);               %获取tz的列数,忽略行数
tic;
cc=zeros(1,sum(tz));            %用于储存每个时刻的电价
for i=1:tzn
    en=sum(tz(:,1:i));          %找到赋值的终点
    st=en-tz(:,i)+1;            %找到赋值的起点
cc(:,st:en)=c(i)*ones(1,tz(i)); %为cc赋值i时段的电价
end
toc
tic;
dd= cell(tzn,1);
for i=1:tzn
    dd{i}=c(i)*ones(1,tz(i));
end
ee=cell2mat(dd');
toc

运行结果

>> smalltest
时间已过 0.006865 秒。

时间已过 0.002638 秒。

速度还是快了很多的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值