Interp1 on a cell array

8 Ansichten (letzte 30 Tage)
Sam Smith
Sam Smith am 7 Dez. 2018
Kommentiert: Sam Smith am 7 Dez. 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 Kommentare
Image Analyst
Image Analyst am 7 Dez. 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 am 7 Dez. 2018
Thank you. I mean A should have curly brackets, not square.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Stephen23
Stephen23 am 7 Dez. 2018
Bearbeitet: Stephen23 am 7 Dez. 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 Kommentar
Sam Smith
Sam Smith am 7 Dez. 2018
Thank you. I'm happy you focussed on the substance of my question.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

madhan ravi
madhan ravi am 7 Dez. 2018
Bearbeitet: madhan ravi am 7 Dez. 2018
you may look into fillmissing released in 2016b

Image Analyst
Image Analyst am 7 Dez. 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?

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by