CLC;%清除命令窗口。关闭所有;%关闭所有数字(除了IMTool之外。)清除;%删除所有现有变量。或者如果你想要的话。工作区;%确保显示工作区面板显示。格式长g;格式紧凑; % Initialize variables: a = randi([0, 5], 1000, 1); b = nan(size(a)); numTrials = 1000; vecWon = 0; for t = 1 : numTrials % Find where a is 0, 1, or 2 and set it = 0 there. % Try it vectorized first. vectorizedStartTime = tic; logicalIndexes = a==0 | a==1 | a==2; b(logicalIndexes)=0; elapsedTimeVectorized(t) = toc(vectorizedStartTime); % Now try it with a for loop b = nan(size(a)); % Reset forStartTime = tic; for k = 1 : numel(a) if a(k)==0 || a(k)==1 || a(k)==2 b(k)=0; else b(k)=nan; end end elapsedTimeFor(t) = toc(forStartTime); fprintf('At iteration %d\n Vectorized took %.7f seconds.\n For loop took %.7f seconds.\n', ... k, elapsedTimeVectorized(t), elapsedTimeFor(t)); % See who was faster. if elapsedTimeVectorized(t) < elapsedTimeFor(t) vecWon = vecWon + 1; end end vecPercentage = 100 * vecWon / numTrials; forPercentage = 100 * (numTrials - vecWon) / numTrials; fprintf('--------------------------------------------------\n'); fprintf('Vectorized won %3d times out of %d = %.1f%%.\nFor loop won %3d times out of %d = %.2f%%.\n', ... vecWon, numTrials, vecPercentage, (numTrials - vecWon), numTrials, forPercentage); % Compute the average time for the vectorized method: fprintf('The average time for the vectorized method = %g.\n', mean(elapsedTimeVectorized)); fprintf('The average time for the for loop method = %g.\n', mean(elapsedTimeFor));