Interp1 on a cell array

8 visualizzazioni (ultimi 30 giorni)
Sam Smith
Sam Smith il 7 Dic 2018
Commentato: Sam Smith il 7 Dic 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 Commenti
Image Analyst
Image Analyst il 7 Dic 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 il 7 Dic 2018
Thank you. I mean A should have curly brackets, not square.

Accedi per commentare.

Risposta accettata

Stephen23
Stephen23 il 7 Dic 2018
Modificato: Stephen23 il 7 Dic 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 Commento
Sam Smith
Sam Smith il 7 Dic 2018
Thank you. I'm happy you focussed on the substance of my question.

Accedi per commentare.

Più risposte (2)

madhan ravi
madhan ravi il 7 Dic 2018
Modificato: madhan ravi il 7 Dic 2018
you may look into fillmissing released in 2016b

Image Analyst
Image Analyst il 7 Dic 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?

Categorie

Scopri di più su Resizing and Reshaping Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by