How to assign to an empty array

Hi How to check in a column of table whether every row is assigned or not. If not how can I add a new value. I have assigned till 4. Now I want to assign 5 to the empty unassigned space.
i have two tables.
item rad ID
1 22 1
1 24 2
1 25 3
1 32 4
item rad ID
2 22.5 1
2 24.7 2
2 25.5 3
2 32.6 4
2 34
i want to assign ID for 34 as 5... if theres any other empty cell in table 2 then 6, 7 and so on. how can i use it inside a for loop so if theres any empty field, it inserts number after the last value assigned

2 Commenti

Rik
Rik il 2 Ago 2019
I would expect you can use the isempty function. Can you provide example input and output?
i have two tables.
item rad ID
1 22 1
1 24 2
1 25 3
1 32 4
item rad ID
2 22.5 1
2 24.7 2
2 25.5 3
2 32.6 4
2 34
i want to assign ID for 34 as 5... if theres any other empty cell in table 2 then 6 , 7 and so on

Accedi per commentare.

Risposte (1)

madhan ravi
madhan ravi il 2 Ago 2019
Modificato: madhan ravi il 2 Ago 2019
It's always better that you provide the data as Rik mentioned:
column = 1;
idx = cellfun('isempty',table2cell(T(:,column))); % T your table
T{idx,column} = {5}
edit:
So you have two tables say T1 and T2:
column = 3;
T = [T1;T2]; % concatenate them as one
idx = cellfun('isempty',table2cell(T(:,column))); % find the empty ones
STartwith = 5;
T{idx,column} =num2cell((1:nnz(idx)).' - 1 + STartwith)

7 Commenti

Oh sorry the question was submitted incompletely.
how can i use it inside a for loop so if theres any empty field, it inserts number after the last value assigned
See edit in the answer.
Yeah I have jus updated it
My comment remains the same.
karishma koshy
karishma koshy il 2 Ago 2019
Modificato: karishma koshy il 2 Ago 2019
HI Sir
If I'm not sure which was last assigned value, how can I update the empty cell.
I want to use it inside a for loop as I have 100 such small tables.
madhan ravi
madhan ravi il 2 Ago 2019
Modificato: madhan ravi il 2 Ago 2019
Not sure what you mean. Illustrate with an example and your desired output. And DON'T ever copy the output from a command window and paste it here (it's never useful) , always paste the code (that produces the table)!! Is there anyway of deducing it as one table instead of 100 such tables, in the first place?. The task would have been easier.
% make arrays into tables
data1 = array2table(row_frame1_data,'VariableNames',{'frame','centre_x','centre_y','radius'});
data2 = array2table(row_frame2_data,'VariableNames',{'frame','centre_x','centre_y','radius'});
% assign id's to data2
data2.id = (1:size(data2,1))';
% find row numbers in frame1 data that have matching rows in frame2 data
% (these are the rows of result1 that have a 1 in them)
iRow = find(any(result1,2));
% find row numbers in frame 2 where each match occurs
[id,~] = find(result1');
% assign these ids in data1
% rows that don't have a matching ID will be assigned NaN
data1.id = NaN(size(data1,1),1);
data1.id(iRow) = id;
% display results
disp(data1)
disp(data2)
i want a for loop of the same. inside the for loop i want to assign the ID to data1. Then i want to find the assigned point in frame i. if no assigned point, i want to assign as next available ID. If assigned point, I want to set ID for i+1 equal to ID for i. result1 is a logical array
Expected Output
frame centrex centrey ID
1 2 3 1
1 7 9 2
2 3 3 1
2 8 10 2
3 5 20 3
3 8 9 2
so on

Accedi per commentare.

Richiesto:

il 2 Ago 2019

Commentato:

il 2 Ago 2019

Community Treasure Hunt

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

Start Hunting!

Translated by