Interpolation Error using interp1 for interval 30 minutes
    4 views (last 30 days)
  
       Show older comments
    
Hi everyone,
Could you help me check my below code? I'm trying with many ways, however, It always met the error
    % %%reset
clear all;
close all;
clc;
%delete NaN, continuously duplicated value and keep the last one
f=fopen('CLF1997.txt');
c=textscan(f , '%s%s%s%f' , 'Headerlines' , 1 , 'delimiter' , '  ');
fclose(f);
t =[diff(c{end})~=0;true];
C = [c{1:3}];
data = [C(t,:),num2cell(c{end}(t))];
clearvars -except data
%combine column date and time
day = data(1:end,2);
time = data(1:end,3);
ns = datenum(day, 'MM/dd/yyyy') + datenum(time, 'hh:mm:ss') - datenum('00:00:00','hh:mm:ss');
data=[data num2cell(ns)];
data(:,2:3)=[];
%data = cell2table(data,'VariableNames',{'Symbol','Price','DateTime'});
DTn = data(:,2);
ti = 1/(60/30 * 24);                    % Time Interval
DTiv = transpose(DTn{1}:ti:DTn{end});           % Interpolation Vector
Price = data(:,2);        % Vector: Column #2 Of Table1
DT30 = interp1({DTn}, Price, {DTiv});     % Interpolated Column #2
NewTable1 = {datestr(DTiv, 'MM/dd/yyyy hh:mm:ss')  DT30};
Result = [NewTable1{1} repmat(' ', size(NewTable1{2})) num2str(NewTable1{2}, '%.2f')];
Result5 = Result(1:5,:);
The error:
    % Error using interp1 (line 109)
X must be a vector of numeric coordinates.
Error in Interval30minute (line 24) DT30 = interp1({DTn}, Price, {DTiv}); % Interpolated Column #2
Attached is file using this code.
0 Comments
Accepted Answer
  KSSV
      
      
 on 15 Jun 2016
        %%reset
clear all;
close all;
clc;
%delete NaN, continuously duplicated value and keep the last one
f=fopen('CLF1997.txt');
c=textscan(f , '%s%s%s%f' , 'Headerlines' , 1 , 'delimiter' , '  ');
fclose(f);
t =[diff(c{end})~=0;true];
C = [c{1:3}];
data = [C(t,:),num2cell(c{end}(t))];
clearvars -except data
%combine column date and time
day = data(1:end,2);
time = data(1:end,3);
ns = datenum(day, 'MM/dd/yyyy') + datenum(time, 'hh:mm:ss') - datenum('00:00:00','hh:mm:ss');
data=[data num2cell(ns)];
data(:,2:3)=[];
%data = cell2table(data,'VariableNames',{'Symbol','Price','DateTime'});
DTn = data(:,2);
ti = 1/(60/30 * 24);                    % Time Interval
DTiv = transpose(DTn{1}:ti:DTn{end});           % Interpolation Vector
Price = data(:,2);        % Vector: Column #2 Of Table1
% Convert cell to matrix 
DTn = cell2mat(DTn) ;
Price = cell2mat(Price) ;
% Arrange the matrix in order
[DTn,idx] = sort(DTn) ;
Price = Price(idx) ;
% Remove doubles
[DTn1,idx] = unique(DTn) ;
DTn = DTn1 ;
Price = Price(idx) ;
DT30 = interp1(DTn, Price, DTiv);     % Interpolated Column #2
NewTable1 = {datestr(DTiv, 'MM/dd/yyyy hh:mm:ss')  DT30};
Result = [NewTable1{1} repmat(' ', size(NewTable1{2})) num2str(NewTable1{2}, '%.2f')];
Result5 = Result(1:5,:);
More Answers (1)
  aastha gupta
 on 25 Oct 2019
        please help me with the code.I am getting an error in linear interpolation.
Error using interp1 (line 109)
X must be a vector of numeric coordinates.
 V(1)= f(0)/b(0);
    V(N+1) = f(1)/b(1);
    W(1) = U(1) - V(1);
    W(N+1) = U(N+1)-V(N+1);
 for  i = 2:N
    V(i) = f(x(i))./b(x(i));
    W(i) = U(i) - V(i);
 end
    backdW(2)= (W(2)-W(1))/h;
    fordW(2)= (W(3)-W(2))/h;
    backdW(N)= (W(N)-W(N-1))/h;
    fordW(N)= (W(N+1)-W(N))/h;
    secdW(2)= (fordW(2) - backdW(2))/h;
    secdW(N)= (fordW(N) - backdW(N))/h;
for i = 3:N-1
    backdW(i)= (W(i)-W(i-1))/h ;
    fordW(i)= (W(i+1)-W(i))/h ;
    secdW(i)= (fordW(i)-backdW(i))/h ;
end
    avgsecdW(2)=secdW(2);
    avgsecdW(N+1)=secdW(N);
for i=3:N
    avgsecdW(i)= (secdW(i)+ secdW(i-1))/2 ;
end
for i=1:N
    K = cumsum(h*sqrt(abs(avgsecdW(i+1))));  
end
Q(2) = K + sqrt(abs(avgsecdW(2)));
Q(N+1) = K + sqrt(abs(avgsecdW(N+1)));
for i=3:N
    Q(i)= K + sqrt(abs(avgsecdW(i)));
end
   M(2) = h*Q(2);
for j = 3:N+1
    for i = 2:j
        M(j)= cumsum(h* Q(i));
    end
end
Iteration = 0;
while( max(h*Q(i))/M(N+1)) > (2/N)
      Iteration = Iteration + 1;      
      Y = linspace(0, M(N+1), N+1)';
      x(1)=0; x(N+1)=1; % avoid issues with round-off      
      x = interp1(M, x, Y);
      M(1)=0;
end
0 Comments
See Also
Categories
				Find more on Dates and Time in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


