Implementing FIR Bandpass Filter for 1-3Hz range

You have some errors in handling the pointers.

  if (++p_vector > &analog[N]) {

The > should be >=

      p = &analog[N];

This should be

      p = &analog[N-1];

The for loop limit is incorrect. It should be

  for (i = 0; i < N; i++) {

Your code will go round the loop 102 times instead of 101.

But you have much bigger problems than that. An FIR filter is designed for a specific sampling rate but you have made no attempt to maintain a specific sampling rate. The 101 multiply and accumulate operations will take many milliseconds (probably hundreds of ms) to execute on most Arduinos which will limit what your sampling rate can be. Also, you will need to ensure that your input signal is properly band-limited so that its frequency components are all less than half the sampling rate otherwise the results will be meaningless.
What sampling rate did you specify to Matlab?

My desired output is in the 1-3Hz range

Do you mean you have a filter that is 1-3Hz wide at some frequency or that you are filtering out everything except the signal from 1-3Hz? Either way, such a narrow filter is going to be very difficult to implement on an Arduino.

Pete