if the cell duplicated put last column in the previous row

1 次查看(过去 30 天)
i run this code but it gives an error:
j=1;
rowsize=length(defs);
data1=cell([rowsize,C2]); % create array with size [R,C]
for j=1:length(defs) % loop over Mdr of defib
querymdr=data2{j,1}; % save MDR numbers
y=alldata{:,1};
idx= find(y==querymdr); % find in alldata MDR equals def
record=[alldata{idx(1),:}]; % copy the 1st search result
for k=2:length(idx)% over all MDR number of text
record = [record,(alldata(idx(k),6))];
end
data1(j,:)=record; % put combined record into result table
end
what is the wrong thing ?
  5 个评论
Walter Roberson
Walter Roberson 2015-5-14
What is class(y) and size(y) when the problem occurs?
Also your code does not account for the possibility of there being no match.
Amr Hashem
Amr Hashem 2015-5-14
i adjust the code to be :
for j=1:length(defs)
querymdr=data2(:,1);
y=alldata(:,1);
idx= find(y==querymdr); % find matched cells
record= alldata(idx,:);
it gives me an error in idx= find(y==querymdr); % y has 37*1 cell and querymdr has 5*1 cell
they are matched columns, but y has 37 cell and querymdr has 5 only. i want to find the matched cells.
what is wrong?

请先登录,再进行评论。

采纳的回答

James Tursa
James Tursa 2015-5-14
Maybe idx is empty (i.e., the find didn't result in a match). Do this to verify:
dbstop if error
Then run your code. When the error occurs, the execution will pause and you can examine variable sizes to confirm the problem and why it occurred.
  2 个评论
Amr Hashem
Amr Hashem 2015-5-14
i adjust the code to be :
for j=1:length(defs)
querymdr=data2(:,1);
y=alldata(:,1);
idx= find(y==querymdr); % find matched cells
record= alldata(idx,:);
it gives me an error in idx= find(y==querymdr); % y has 37*1 cell and querymdr has 5*1 cell
what is wrong?

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Debugging and Analysis 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by