matlab元胞使用小记录

-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 秒。

速度还是快了很多的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值