Interp1 on a cell array

8 vues (au cours des 30 derniers jours)
Sam Smith
Sam Smith le 7 Déc 2018
Commenté : Sam Smith le 7 Déc 2018
I have a cell array that contains some numbers and empty spaces, say
A=[ , ,4,5,6,7,,,8,,5, , ,]
I want to interpolate A using interp1('previous') so that it becomes
A=[ , ,4,5,6,7,7,7,8,8,5, , ,]
That it is a cell array is making it difficult to use interp1. What I have got so far is this:
A={betdaqv{5,:}};
x = 1:length(A);
xi = 1:length(A);
emptyloc=find(cellfun(@isempty,A));
zs = emptyloc;
A(zs)=[];
x(zs)=[];
But then applying the following doesn't work:
output1 = interp1(x, A, xi,'previous')
See attached for betdaqv.
  3 commentaires
Image Analyst
Image Analyst le 7 Déc 2018
You forgot to attach betdaqv. Make it easy for us to help you, not hard.
Save betdaqv in a .mat file and then upload
save('answers.mat', 'betdaqv');
Once we have it, we can try things and help you.
Sam Smith
Sam Smith le 7 Déc 2018
Thank you. I mean A should have curly brackets, not square.

Connectez-vous pour commenter.

Réponse acceptée

Stephen23
Stephen23 le 7 Déc 2018
Modifié(e) : Stephen23 le 7 Déc 2018
>> A = {[],[],4,5,6,7,[],[],8,[],5,[],[]};
>> idx = find(~cellfun('isempty',A));
>> idy = idx(1):idx(end);
>> new = interp1(idx,[A{idx}],idy,'previous');
>> A(idy) = num2cell(new);
>> A{:}
ans = []
ans = []
ans = 4
ans = 5
ans = 6
ans = 7
ans = 7
ans = 7
ans = 8
ans = 8
ans = 5
ans = []
ans = []
  1 commentaire
Sam Smith
Sam Smith le 7 Déc 2018
Thank you. I'm happy you focussed on the substance of my question.

Connectez-vous pour commenter.

Plus de réponses (2)

madhan ravi
madhan ravi le 7 Déc 2018
Modifié(e) : madhan ravi le 7 Déc 2018
you may look into fillmissing released in 2016b

Image Analyst
Image Analyst le 7 Déc 2018
In the following code, your A does not have any empty values:
s = load('answers.mat')
betdaqv = s.betdaqv
A={betdaqv{5,:}};
x = 1:length(A);
xi = 1:length(A);
emptyloc=find(cellfun(@isempty,A));
zs = emptyloc;
A(zs)=[];
x(zs)=[];
Why do you think it should?

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by