Changing the frequency of an array does not work always

2 次查看(过去 30 天)
Hi All
I have a time array , from which I first drop some elements, then change its frequency based on the input I give. the array is X in the code. what happens is that for some specific values , like reduction = 2 and freq = 1000 Hz if the original frequency of X was 512 Hz, the length of redt2 falls one element shorter than the original X array. how does this happen and what is the solution.
X is any time signal, 1D array with any length and frequency
reduction =2
X =X (1:reduction:numel(X));
redt1=[X];
rf= redt1(2)-redt1(1);
tend=redt1(numel(redt1));
freq= input(frequency)
dt= 1/freq
redt2= 0:dt:tend/rf/freq;
  8 个评论

请先登录,再进行评论。

采纳的回答

Image Analyst
Image Analyst 2020-11-28
In
freq= input(frequency)
what is frequency? Some string you defined to ask the user for the frequency? Please show how you defined it.
reduction = 2
X_Original = 1 : 1000;
whos X
samplingFreqOriginal = (X_Original(end) - X_Original(1)) / numel(X_Original)
X_Reduced = X_Original(1:reduction:numel(X_Original));
whos X
samplingFreqReduced = (X_Reduced(end) - X_Reduced(1)) / numel(X_Reduced) % Will be 2 times samplingFreqOriginal
% Not sure what anything after here is intended to do.
redt1 = X_Reduced;
rf = redt1(2) - redt1(1)
tend = redt1(numel(redt1))
frequency = 'Enter the frequency : ';
freq = input(frequency)
dt = 1 / freq
redt2 = 0:dt:tend/rf/freq;
  9 个评论
Image Analyst
Image Analyst 2020-11-28
Then simply do
% Sample values:
startingValue = 1
deltaX = 3
numElements = 9
% Create array:
x = startingValue : deltaX : (startingValue + (numElements - 1) * deltaX)
fprintf('x is %d elements long.\n', length(x));

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by