I have a signal pattern $s$ that generated at time $t$ like this: $$ s(x,y,t)=D(x,y)\sin(\omega t-0.56) $$

Where $D(x,y)$ is a mode shape, calculated by $$ D(x,y)=a\left\{\left(\frac{x}{m}-0.55\right)x-\left(\frac{y}{n}-0.55\right)y\right\} $$ Where $m,n,a$ is the $m\times n$ size of image and excite amplitude respectivetly.

The image $i$ is multiplied by $s(x,y,t)$ to get the mode shape $f$ $$ f(x,y,t)=s(x,y,t)\cdot i(x,y) $$

My question is, at every instance of time $t$, how do I distort the shape $f$ using bilinear interpolation?

Matlab function before the distortion:

function [ sim ] = simvib( inputimage, amplitude, T, normalizedto, pauses )

if ~exist('pauses', 'var'), pauses=0.5; end
    omega = 1;
    [m, n] = size(inputimage);
    [x, y]=meshgrid(1:n,1:m);
    for t=1:T
        simulate=normalize_var(simulate, 0, normalizedto); %normalize max to normalizedto
        sim(:,:,t) = simulate;
        imagesc(sim(:,:,t)); %the mode shape


Thanks in advance!

  • 1
    $\begingroup$ Can you clarify: What kind of distortion you're looking for, and why? What do you mean by "how to distort" (how to code it, how to understand it)? You say that your code does "all this process", so what do you need help with? $\endgroup$
    – MBaz
    Commented Apr 6, 2017 at 14:12
  • $\begingroup$ The function above will produce the mode shape for time t:T, without any distortion, that means the mode shapes will be the same for time t:T. My idea was to produce a different mode shape at every instance of $t$. However I'm not clear with how can the pattern be distorted to produce a new pattern. I'm following the steps in this paper, section 5.2(last paragraph on that page). Edited the question! Thanks! $\endgroup$ Commented Apr 6, 2017 at 14:36


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.