三次元行列の作成
43 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
shunya hara
le 22 Juil 2020
Commenté : Shunichi Kusano
le 25 Juil 2020
画像(1000枚)の輝度値を要素とした三次元行列を作成したいです。
cat関数を用いて、画像を三次元に拡張しようと考えたのですが時間がかかります。
もっと早く作成する方法はありますか?
gray スケールの画像1000枚をfor構文とcat関数を用いて一枚ずつ三次元方向にくっつけています。
0 commentaires
Réponse acceptée
Shunichi Kusano
le 22 Juil 2020
b = zeros(m,n,1000);
で始めに1000枚分の行列を確保してから,for文で一枚ずつ画像入れてあげると早くできます。
% sample
img = rand(500,500);
tic
imgall = zeros(500,500,1000);
for i = 1:1000
imgall(:,:,i) = img;
end
toc % 経過時間は 0.936728 秒です。
tic
imgall = img;
for i = 2:1000
imgall = cat(3,imgall,img);
end
toc % 経過時間は 586.288862 秒です。
5 commentaires
Shunichi Kusano
le 25 Juil 2020
100枚に減らしたんでしょうか。
3から始まっていていいのでしたら、他には特に気になるところはないです。・・・とおもったら、C(;,;,n)=Aのところは
C(:,:,n) = A; % セミコロンではなくてコロン
です。
Plus de réponses (1)
madhan ravi
le 22 Juil 2020
Modifié(e) : madhan ravi
le 22 Juil 2020
I = num2cell(Images);
W = cat(3, I{:});
2 commentaires
madhan ravi
le 22 Juil 2020
n = 4 : 1079;
A = cell(numel(n), 1);
for n = n
A{k} = imread(a(n).name);
k = k + 1;
end
W = cat(3, A{:});
Voir également
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!