Matlab заполнить матрицу цветом

Всем привет.

Что-то туплю. Как вот это переписать красиво (то бишь без циклов):

function cimage(img, color, alpha, h)
	img_ = ones(size(img,1), size(img,2), 3);
	for i=1:size(img,1)
		for j=1:size(img,2)
			if img(i,j)
				img_(i,j, :) = rgb(color);
			end
		end
	end
	image(h, img_, 'AlphaData', alpha);
end

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
img_ = ones([size(img) 3]);
img_(repmat(img != 0, [1,1,3])) = repmat(rgb(color), size(img(img != 0), 1), 1)(:)

как-то так?

img = zeros(300,400,3);
img(:, :, :) = color;
figure, imshow(img);

неа. там надо выставлять только те точки, где маска img(i,j,:) != 0

Не дочитав.
Тоді ось це має допомогти:
www.mathworks.com/...1421-2d-index-to-3d-array

Підписатись на коментарі