How to iterate through an array to check for adjacent elements that are equal to one another using loops.
32 ビュー (過去 30 日間)
古いコメントを表示
%This loads the file and allows us the work with the 'nr' varible
load("m05.mat")
%Varible for vector one. This vector will display all the indices of the
%elements meeting the condition
%V1 = nr;
%position one and position two in the array 'nr'
p1 = sym(nr(:,1));
p2 = sym(nr(:,2));
%Varible for vector two. This vector will display all of the values of the
%elements that meet the condition
%V2 = nr;
%% Section 2: Processing
%Loop to find the values for V2
for i = 1:1:1000
if p1 == p2
disp(p1)
disp(p2)
end
p1 = sym(nr(:, +1)); %I want p1 and p2 to be reassinged to the next
%element in the array 'nr'. 'nr' contains 1000 elements. I want the loop to
%check if adjacent elements in my loop are equal. For example if nr was
%equal to [1, 2, 2, 3], I would want it to display: '2' '2', at indices 2
%and 3.
p2 = sym(nr(:, +1));
end
1 件のコメント
回答 (1 件)
KALYAN ACHARJYA
2020 年 10 月 2 日
"How to iterate through an array to check for adjacent elements that are equal to one another using loops"
Here a is an 1D array here
idx=zeros(1,length(a));
for i=1:length(a)
switch i
case 1
if a(i)==a(i+1)
idx(i)=1;
end
case length(a)
if a(i)==a(i-1)
idx(i)=1;
end
otherwise
if a(i)==a(i-1) || a(i)==a(i+1)
idx(i)=1;
end
end
end
idx
3 件のコメント
Ron Fredericks
2024 年 8 月 10 日 20:33
Fun fact: if numbers to compare were floats instead of integers. The if statements could use ismembertol function instead of equals comparison. I reused this nice bit of code shared by @KALYAN ACHARJYA for graphics zoom error test. Sample code change :
if ismembertol(a(1), a(2))
% ...
end
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!