Replace array elements with another small array using indexing

Hi everyone,how to replace array with another small array using indexing
a=[1 1 4 1 3 3 1 1 1 3 4 1 0 0 0 0 0 0 0 0 0];
%replace 1 4 1 with 0 3 0 and 3 4 1 with 2 and b=b(b~=0); to get a new vector
b=[1 3 3 3 1 1 1 2];
Thank you.

댓글 수: 3

%replace 1 4 1 with 0 3 0
The output you've shown has 1 4 1 replaced with 3, not with 0 3 0.
I want to do it both ways, replace with 3 or with 0 3 0 and use b=b(b~=0); to get a new array without 0.
%my code:
path=[1 1 4 1 3 3 1 1 1 3 4 1 0 0 0 0 0 0 0 0];
p=path;
n=length(p);
for i=1;i=n-3;i=i+1;
if ( p(i)==1 && p(i+1)==4 && p(i+2)==1)
p(i:i+2)= [0 3 0];
end
end
p=p(p~=0);
still not getting desired output

댓글을 달려면 로그인하십시오.

답변 (1개)

Matt J
Matt J 2020년 5월 19일
b=strrep( strrep(a,[1 4 1],3) ,[3 4 1],2)

댓글 수: 2

this actually works but a warning occurs:Inputs must be character vectors, cell arrays of character vectors, or string arrays.
if instead of integers i have character vector like
path=["L" "L" "U" "L" "S" "S" "L" "L" "L" "S" "U" "L" "0" "0" "0" "0" "0" "0" "0" "0"];
how can i get shortest path (for line maze) eg: replace L U L with S and S U L with R.
shortpath=["L" "S" "S" "S" "L" "L" "L" "R"];

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품

태그

질문:

2020년 5월 19일

댓글:

2020년 5월 19일

Community Treasure Hunt

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

Start Hunting!

Translated by