三次元行列の作成
14 views (last 30 days)
Show older comments
shunya hara
on 22 Jul 2020
Commented: Shunichi Kusano
on 25 Jul 2020
画像(1000枚)の輝度値を要素とした三次元行列を作成したいです。
cat関数を用いて、画像を三次元に拡張しようと考えたのですが時間がかかります。
もっと早く作成する方法はありますか?
gray スケールの画像1000枚をfor構文とcat関数を用いて一枚ずつ三次元方向にくっつけています。
0 Comments
Accepted Answer
Shunichi Kusano
on 22 Jul 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 Comments
Shunichi Kusano
on 25 Jul 2020
100枚に減らしたんでしょうか。
3から始まっていていいのでしたら、他には特に気になるところはないです。・・・とおもったら、C(;,;,n)=Aのところは
C(:,:,n) = A; % セミコロンではなくてコロン
です。
More Answers (1)
madhan ravi
on 22 Jul 2020
Edited: madhan ravi
on 22 Jul 2020
I = num2cell(Images);
W = cat(3, I{:});
2 Comments
madhan ravi
on 22 Jul 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{:});
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!