matlab怎么求时间优化,Matlab 矩阵运算优化以提高运行时间

背景:

计算机刷新率60Hz,每一帧的时间为 1/60 = 16.67ms。

目的:

想把运算量的计算时间控制在一帧以内,以实现帧同步。(需求:优化代码)

问题:

通过测试,发现每次运算的时间都大于一帧。约3到4帧的时间。如下图。

由于个人能力有限,网上也查阅了很多方法,折腾了好久,实现想不出更好的方法了。恳请各位论坛前辈帮忙。

% 通过数学运算得到棋盘格

white =1;

black = 0;

grey = 0.5;

screenYpix = 1080;

% Number of white/black circle pairs

rcycles = 8;

% Number of white/black angular segment pairs (integer)

tcycles = 24;

% Now we make our checkerboard pattern

xylim = 2 * pi * rcycles;

[x, y] = meshgrid(-xylim: 2 * xylim / (screenYpix - 1): xylim,...

-xylim: 2 * xylim / (screenYpix - 1): xylim);

at = atan2(y, x);

atC=at*tcycles/(4*pi);

firstSec=atC<=1 & at>=0;

r=sqrt(xylim*sqrt(x.^2 + y.^2));

rC=r/(4*pi);

circle = rC>=1 & rC<4;

N_loc=(rcycles/2-1)*tcycles/2;

locInd=cell(N_loc,1);

k=0;

for i=1:rcycles/2-1

for j=-tcycles/4:tcycles/4-1

k=k+1;

locInd{k} = find(rC>=i & rC=j & atC

end

end

checks = ((1 + sign(sin(at * tcycles) + eps)...

.* sign(sin(sqrt(xylim*sqrt(x.^2 + y.^2))))) / 2) * (white - black) + black;

Checks = circle .* checks + grey * ~circle;

% The stimulus texture

Checks(rC<0.95 & (abs(x)

% Seq以附件上传

load Seq;

Seq = logical(Seq);

[L_seq,~] = size(Seq);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%  每次在循环汇中每次重复该代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%

for i=1:

% tic;

checks = Checks;

ii=mod(i,L_seq)+1;

loc=cell2mat(locInd(Seq(ii,1:N_loc)));

checks(loc) = white - checks(loc);

% toc;

end

想通过更好优化的方法,能够使循环中的计算能够减小至计算机1帧的时间以内。

提前感谢各位能提出建议和给出方法的坛友。

谢谢!!

1575902573(1).jpg

(4.4 KB, 下载次数: 0)

2019-12-9 22:44 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

f575f4064652451f04e0dc92cc3c9483.png

16ae97300fb26d5150aca66cd3888cb6.gif

2019-12-9 22:47 上传

点击文件名下载附件

24.19 KB, 下载次数: 2

Seq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值