Interp1 on a cell array

8 ビュー (過去 30 日間)
Sam Smith
Sam Smith 2018 年 12 月 7 日
コメント済み: Sam Smith 2018 年 12 月 7 日
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 件のコメント
Image Analyst
Image Analyst 2018 年 12 月 7 日
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 2018 年 12 月 7 日
Thank you. I mean A should have curly brackets, not square.

サインインしてコメントする。

採用された回答

Stephen23
Stephen23 2018 年 12 月 7 日
編集済み: Stephen23 2018 年 12 月 7 日
>> 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 件のコメント
Sam Smith
Sam Smith 2018 年 12 月 7 日
Thank you. I'm happy you focussed on the substance of my question.

サインインしてコメントする。

その他の回答 (2 件)

madhan ravi
madhan ravi 2018 年 12 月 7 日
編集済み: madhan ravi 2018 年 12 月 7 日
you may look into fillmissing released in 2016b

Image Analyst
Image Analyst 2018 年 12 月 7 日
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?

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by