[已解决] 一个困扰我许久矩阵赋值问题

[复制链接]
bfwhb 发表于 2018-3-18 18:23:50
本帖最后由 bfwhb 于 2018-3-18 18:27 编辑

各位朋友好,我最近在做毕业设计,里面涉及的一小部分源代码(导师提供的,无错误)如下:
代码一:
  1. n=255;
  2. m=8;
  3. L_source=2;
  4. k=95;
  5. Num_Embed_Block=256;
  6. for i=1:L_source
  7.     encodedData_source_stego((i-1)*n*m+k*m+1:(i-1)*n*m+k*m+Num_Embed_Block)= encodedData_Auth_matrix(:,i);
  8. end
复制代码


说明:
encodedData_source_stego是4080*1的矩阵,随机产生的,每个元素是二进制数0或1,
encodedData_Auth_matrix是256*2的矩阵,随机产生的,每个元素是二进制数0或1。这段代码的目的是:
用encodedData_Auth_matrix矩阵第1列的第1行到第256行去替换encodedData_source_stego的第761行至第1016行,
用encodedData_Auth_matrix矩阵第2列的第1行到第256行去替换encodedData_source_stego的第2801行至第3056行。
编译运行,对比数据后确认的确是准确的替换了,

我的目的:
用encodedData_Auth_matrix矩阵第1列的第1行到第128行去替换encodedData_source_stego的第761行至第888行
用encodedData_Auth_matrix矩阵第1列的第129行到第256行去替换encodedData_source_stego的第1781行至第1908行
用encodedData_Auth_matrix矩阵第2列的第1行到第128行去替换encodedData_source_stego的第2801行至第2928行
用encodedData_Auth_matrix矩阵第2列的第129行到第256行去替换encodedData_source_stego的第3821行至第3948行。


我自己写的代码:
代码二:
  1. for i=1:L_source
  2.     for j=1:L_source
  3.         encodedData_source_stego((i-1)*n*m+(j-1)*n*m/2+k*m+1:(i-1)*n*m+(j-1)*n*m/2+k*m+Num_Embed_Block/2)= encodedData_Auth_matrix((j-1)*Num_Embed_Block/2+1:(j-1)*Num_Embed_Block/2+Num_Embed_Block/2,i);
  4. end
  5. end

复制代码


编译运行后,对比数据后发现结果和代码一一样,无任何报错警告,没有实现代码二的目的。请问我改如何修改?谢谢!

最佳答案


土木小王子 发表于 2018-3-18 19:13:21
%encodedData_source_stego是4080*1的矩阵
%encodedData_Auth_matrix是256*2的矩阵
encodedData_source_stego(761:888)=encodedData_Auth_matrix(1:128,1);
encodedData_source_stego(1781:1908)=encodedData_Auth_matrix(129:256,1);
encodedData_source_stego(2801:2928)=encodedData_Auth_matrix(1:128,2);
encodedData_source_stego(3821:3948)=encodedData_Auth_matrix(129:256,2);

这样就可以了。有用请支持,正确请设置最优!

回复此楼

4 条回复


土木小王子 发表于 2018-3-18 19:13:21
%encodedData_source_stego是4080*1的矩阵
%encodedData_Auth_matrix是256*2的矩阵
encodedData_source_stego(761:888)=encodedData_Auth_matrix(1:128,1);
encodedData_source_stego(1781:1908)=encodedData_Auth_matrix(129:256,1);
encodedData_source_stego(2801:2928)=encodedData_Auth_matrix(1:128,2);
encodedData_source_stego(3821:3948)=encodedData_Auth_matrix(129:256,2);

这样就可以了。有用请支持,正确请设置最优!

回复此楼

bfwhb 发表于 2018-3-18 19:25:01
土木小王子 发表于 2018-3-18 19:13
%encodedData_source_stego是4080*1的矩阵
%encodedData_Auth_matrix是256*2的矩阵
encodedData_source_ste ...

谢谢你的帮助,但是不正确。运行后encodedData_source_stego(761:888)全是1
encodedData_source_stego(1781:1908)全是0
encodedData_source_stego(2801:2928)全是0
encodedData_source_stego(3821:3948)全是1

土木小王子 发表于 2018-3-18 19:34:39
bfwhb 发表于 2018-3-18 19:25
谢谢你的帮助,但是不正确。运行后encodedData_source_stego(761:888)全是1
encodedData_source_stego(17 ...

你把这个两个数据已mat的格式传上来看看
encodedData_source_stego
encodedData_Auth_matrix

沸腾的酸汤鱼 发表于 2018-3-20 16:24:17
bfwhb 发表于 2018-3-18 19:25
谢谢你的帮助,但是不正确。运行后encodedData_source_stego(761:888)全是1
encodedData_source_stego(17 ...

既然想弄成一个值,直接给这一串数赋值不就行了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表