前提・実現したいこと
for loopを減らしたい
プログラミング初心者です。プログラミングをするにあたり、for loopを多用してしまい、計算時間が長くなってしまっています。
計算時間を短くするためのヒント、知恵、方法を教えて頂けないでしょうか。
2つあります。1つ目はシンプルなものです。
簡略化したいコード①
%A内の全てのセルを結合
[p,q] = size(A)
A_combined = A{1,1}
for n = 2 : p
A_combined = [A_combined;A{1,n}]
end
簡略化したいコード②
読み込んだグレースケール画像の色彩強度を、指定したWindow毎に平均値をとるプログラムです。
%Clearing all the variables, command window. This is optional%
clear all
clc
close all
色彩強度を得ます
%Taking in the images and playing with them%
list = dir('*.bmp')
% for k = 1:length(list)
for k = 1
image{k}= imread(list(k).name)
[xmax, ymax] = size(image{k})
Windowのサイズを指定します
%Window sizes%
wsize = [16,16]
w_width = wsize(1)
w_height = wsize(2)
%specify grid points%(Change the start number and end numbers)
start = 1
xmin = w_width/2
ymin = w_height/2
xgrid = start:w_width/2:xmax-xmin
ygrid = start:w_height/2:ymax-ymin
%Numbere of windows in total
xgrid_count = length(xgrid)
ygrid_count = length(ygrid)
w_xcount = length(xgrid)-1
w_ycount = length(ygrid)-1
%A place to accomodate the mean values
Mean_I{k} = zeros(w_xcount, w_ycount)
mean_row = 0
mean_column = 0
mean_I = 0
%0.5pix is slided from where the vectors on PIVlab are on purpouse. If this error is too
%big of a deal, this should be fixed. this is caused by the defference between 1-32,33-64... and
%1-33,33-64...
簡略化したいところは、ここからです。
for i=1:(w_xcount)
for j=1:(w_ycount)
win_xmin = xgrid(i)
win_xmax = xgrid(i)+w_width-1
win_ymin = ygrid(j)
win_ymax = ygrid(j)+w_height-1
X = image{k}(win_xmin:win_xmax,:) XY = X(:,win_ymin:win_ymax) Mcol = mean(XY) Mrow = mean(Mcol,2) Mean_I{k}(i,j) = Mrow end
end
end
該当のソースコード
ソースコード
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2018/06/22 17:17
2018/06/22 17:32