matlab怎么判断一个向量与矩阵的一列是不是相等
就是一个汉明码的编码问题.下面是我编了一点的程序.
clc,
H=[1 1 1 1 1 1 1;
1 1 0 1 0 0 0;
0 1 1 0 1 0 0;
1 0 1 0 0 1 0]
M1=[0 0 0 0 1 1 1]'
M2=[0 0 1 0 1 1 1]'
S1=mod(H*M1,2)
S2=mod(H*M2,2)
其中M1和M2是接收到的两个码字,问这两个码字是不是对的?
现在的问题是,要判断S1或者S2是不是和H中的某一列相等,怎么编程序实现这个判断啊?
很急的啊
all(repmat(S1,1,size(H,2))==H)%1所在仿让的列相等(明大谨第3列相等)
all(repmat(S2,1,size(H,2))==H)%1所在的列相等(都不相等)激基
可以按列循环来实现,在后面添加腔信如下代码:for
i=1:size(H,2)
if
all(H(:,i)==S1)
disp('伍森轮yes')
return
end
end
disp('no')在保证运行效率的前提下春庆,如果硬要不使用循环,也许可以用分划成元胞来做
ismember(S1', H', 'rows')
即可
程序后面添雀李加这蔽早几行就可以了
[row col]=size(H);
for i=1:col
if sum(H(:,i)==S1)==row
fprintf('column %d of H eaquals S1\n\n',i);
end
if sum(H(:,i)==S2)==row
fprintf('column %d of H eaquals S2\n\顷并迟n',i);
end
end