How to do xor operation?
이전 댓글 표시
How to do xor operation in cell array. Suppose i have bits x={'1' '1' '1' '0' '1' '1' '0' '1'}; and v={'1' '1' '0' '0' '1' '0' '1' '1'}; Should i use cell function? Can somebody help me with the correct code.
댓글 수: 1
Stephen23
2017년 10월 22일
@Darsana P M: why are you storing this data in cell arrays? Your code would be a lot simpler and more efficient if you stored character data in a char array, or used logical/numeric arrays. Cell arrays do not seem to serve any useful purpose here.
채택된 답변
추가 답변 (4개)
Ugly loops are not required, this is all you need:
>> x = {'1' '1' '1' '0' '1' '1' '0' '1'};
>> v = {'1' '1' '0' '0' '1' '0' '1' '1'};
>> xor([x{:}]-'0',[v{:}]-'0')
ans =
0 0 1 0 0 1 1 0
If you had stored your data in a simpler character array, then all you would need is this:
>> x = '11101101'; v = '11001011';
>> xor(x-'0',v-'0')
ans =
0 0 1 0 0 1 1 0
Compare with Çevikalp Sütunç's answer: which one is going to be more efficient, is easier to understand the purpose of, and will be easier to debug?
KL
2017년 10월 22일
Another method maybe,
x = {'1' '1' '1' '0' '1' '1' '0' '1'};
v = {'1' '1' '0' '0' '1' '0' '1' '1'};
res = logical(zeros(size(x)));
res(str2double(x)~=str2double(v)) = logical(1);
As Stephen says, having a cell array here is unnecessary.
댓글 수: 4
Jan
2017년 10월 22일
Or directly:
res = (str2double(x) ~= str2double(v));
KL
2017년 10월 22일
Oh yeah! Thanks Jan.
Darsana P M
2017년 10월 23일
편집: Stephen23
2017년 10월 23일
Stephen23
2017년 10월 23일
"If suppose i have few vectors as x1={'1' 1' 0 1 1 0 1 0} x2={ 1 1 0 0 1 1 1 0} upto xn..."
Do not do this. Magically accessing variables names is complex, slow, buggy, and hard to debug. Read this to know why:
Much neater, faster, and more efficient would be if you simply stored all of your data in one array (which could be an ND numeric array, or a cell array). Using indexing is simple, fast, easy to debug, and very efficient.
It is strange, that the inputs are char's, but there is no need to convert them:
x = {'1' '1' '1' '0' '1' '1' '0' '1'};
v = {'1' '1' '0' '0' '1' '0' '1' '1'};
L = {'0', '1'};
Result = L(~strcmp(x, v) + 1)
Christina Christofidi
2020년 1월 22일
0 개 추천
Hey, I have an employment about the network coding. I need to run a file with some numbers and do XOR between them. You can help me????
댓글 수: 1
Jan
2020년 2월 2일
Please do not attach a new question in the section for answers of another question. Create your won question instead. By the way, this seems to be a job for a simple xor comand.
카테고리
도움말 센터 및 File Exchange에서 Multidimensional Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!