Adding a new column to a matrix under certain constraints.

1 次查看(过去 30 天)
Hi!
I'm having trouble coming up with how to get what I want. I think a picture will best explain what I'm trying to do.
I want to add a new column to my matrix the following way. It starts counting from 1 and changes everytime the two columns are no longer the same.
So for example for the first three rows both columns are the same, at row 4 they change so the counter changes to 2, at row 5 they change again so once again the counter changes to 3 etc.
Any help is greatly appreciated!

采纳的回答

Abderrahim. B
Abderrahim. B 2022-8-19
Hi!
This a way to do this logic you described in the question, maybe there better ways !
clear
% Dummy data
wp = [[ones(7,1); 2*ones(2,1); ones(8,1)] , randi(3, 17,1) ] ;
% Preallocation and setting first element of the 3rd column to 1
wpDiff = diff(wp) ;
wpNewCol = zeros(length(wp), 1) ;
wpNewCol(1) = 1 ;
% Algorithm
for ii = 2:length(wpNewCol)
if ~ any(wpDiff(ii-1, :))
wpNewCol(ii ) = wpNewCol(ii - 1) ;
else
wpNewCol(ii) = wpNewCol(ii -1) + 1;
end
end
% New wp
new_wp = [wp, wpNewCol]
new_wp = 17×3
1 3 1 1 2 2 1 2 2 1 2 2 1 2 2 1 3 3 1 3 3 2 1 4 2 2 5 1 2 6
Hope this helps

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

产品


版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by