add a moving image over a plotted trajectory

조회 수: 23 (최근 30일)
Isobel Leikis
Isobel Leikis 2022년 5월 7일
댓글: DGM 2023년 10월 11일
x = 0:pi/100:2*pi;
y = sin(x);
plot(x, y);
%i want my image to move in this way
alpaca = 'alpaca.png';
[I,map,transparency] = imread(alpaca);
%i have this code to remove the background of my image
%i tried using image sc but i couldnt get it to work
%thank you!
  댓글 수: 3
Sumit
Sumit 2023년 10월 11일
Please check attachment. according to that i want multiple image (stationary) along trajectory. How it can be done

댓글을 달려면 로그인하십시오.

채택된 답변

DGM
DGM 2022년 5월 7일
편집: DGM 2022년 5월 8일
Assuming you actually want it to move in real time, this should be a start
x = 0:pi/100:2*pi;
y = sin(x);
plot(x, y); hold on
%i want my image to move in this way
fname = 'alpaca.png';
[inpict,~,alpha] = imread(fname);
inpict = flipud(inpict); % necessary to keep image upright
alpha = flipud(alpha);
imgsize = [0.7 0.8]; % [x y] in plot coordinates
% get current coordinates for the image
xx = [-0.5 0.5]*imgsize(1) + x(1);
yy = [-0.5 0.5]*imgsize(2) + y(1);
hi = image(xx,yy,inpict);
hi.AlphaData = alpha; % set alpha
% enforce axes extents
axis equal
xlim([0 2*pi] + [-0.5 0.5]*imgsize(1))
ylim([-1 1] + [-0.5 0.5]*imgsize(2))
for k = 1:numel(x)
hi.XData = [-0.5 0.5]*imgsize(1) + x(k);
hi.YData = [-0.5 0.5]*imgsize(2) + y(k);
% wait
pause(0.02)
end
  댓글 수: 5
DGM
DGM 2022년 7월 11일
Is the rectangle following a predetermined path, or is it appearing in random locations? The latter case is likely less complicated to implement.
Either way, it's probably best to open a new question for this. If you're intending to do this with Psychtoolbox, make sure to mention your intent.
ss
ss 2022년 7월 12일
Thank you for your answer, yes it can be random locations

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Voss
Voss 2022년 5월 7일
Something like this?
x = 0:pi/100:2*pi;
y = sin(x);
figure();
plot(x, y);
hold on
xlim([0 2*pi]);
ylim([-1 1]);
I = imread('alpaca.png');
im = image(I,'XData',[0 1],'YData',[0 1]);
for ii = 1:numel(x)
set(im,'XData',x(ii)+[-0.5 0.5],'YData',y(ii)+[-0.5 0.5]);
drawnow();
end
  댓글 수: 5
Voss
Voss 2022년 7월 5일
편집: Voss 2022년 7월 5일
Try doing
clear image
and then running it again.
That is, you may have a variable called image in your workspace that needs to be cleared before you can use the image function.
ss
ss 2022년 7월 5일
yes it works! thank you a lot

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Timing and presenting 2D and 3D stimuli에 대해 자세히 알아보기

태그

제품


릴리스

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by