查看: 115|回复: 4|关注: 0

[已解决] matlab怎么把双层嵌套的结果给保存到矩阵

[复制链接]

新手

7 麦片

财富积分


050


3

主题

6

帖子

0

最佳答案
我这双层嵌套的for  我是想记录下level=1时, value从0.3到0.5的time/PSNR的值;level=2时, value从0.3到0.5的time/PSNR值,然后放在一个矩阵里。
我现在可以实现记录value从0.3到0.5的time/PSNR的值,但是外面套个level我就不知道怎么做了。
现在是一个矩阵,然后我想他按行排好 如下:
A=[psnr(value=0.3),psnr(value=0.4),psnr(value=0.5)        第一行是level=1
     psnr(value=0.3),psnr(value=0.4),psnr(value=0.5)         第二行是level=2
     psnr(value=0.3),psnr(value=0.4),psnr(value=0.5)]        第三行是level=3

我应该 在后面问号处写什么,真的求问各位大神了,实在百度不到呜呜呜。



for level=1:1:2 %递增,1为初始值,1为步长,10为终止值   10-noise-level

randn('seed',0);
im_r=sqrt((dwi+level*randn(size(dwi))/100).^2+(level*randn(size(dwi))/100).^2);
idata  = im_r.^2;
tdata  = idata(1:40,1:40,:);

for i  = 1:numDWI   
   tbg = tdata(:,:,i);
   sigmas(i) = sqrt(mean(tbg(:))/2);
end
sigmah = mean(sigmas(2:end));


q=1;
for value = 0.3:0.1:0.4
tic
rimavst = riceVST(im_r,sigmah,'A');
ims_denoised =Image_glhosvd(rimavst,1,value,1); %rimavst噪声源; 1 nSig 噪声方差 ; 0.4 kglobal ; 1 klocal
ims_denoised = riceVST_EUI(ims_denoised ,sigmah,'A');
t_time(q)=toc



a=Mask;a=repmat(a,[1 1 numDWI]);
ind1=find(a>0);
PSNR_noisy(q)= PSNR(dwi(ind1),im_r(ind1));
%psnr_noisy_level(level)= PSNR_noisy(q);
%PSNR_noisy(level)= PSNR(dwi(ind1),im_r(ind1));
PSNR_denoised(q) = PSNR(dwi(ind1),ims_denoised(ind1));
%psnr_denoised_level(level) = PSNR_denoised(q);
%PSNR_denoised(level) = PSNR(dwi(ind1),ims_denoised(ind1));

q=q+1
end
????
end

论坛优秀回答者

3

主题

948

帖子

180

最佳答案
  • 关注者: 43
发表于 2020-3-24 15:01:43 | 显示全部楼层 |此回复为最佳答案
试试
  1. p=0;
  2. for level=1:1:2 %递增,1为初始值,1为步长,10为终止值   10-noise-level
  3. p=p+1;
  4. randn('seed',0);
  5. im_r=sqrt((dwi+level*randn(size(dwi))/100).^2+(level*randn(size(dwi))/100).^2);
  6. idata  = im_r.^2;
  7. tdata  = idata(1:40,1:40,:);

  8. for i  = 1:numDWI   
  9.    tbg = tdata(:,:,i);
  10.    sigmas(i) = sqrt(mean(tbg(:))/2);
  11. end
  12. sigmah = mean(sigmas(2:end));


  13. q=1;
  14. for value = 0.3:0.1:0.4
  15. tic
  16. rimavst = riceVST(im_r,sigmah,'A');
  17. ims_denoised =Image_glhosvd(rimavst,1,value,1); %rimavst噪声源; 1 nSig 噪声方差 ; 0.4 kglobal ; 1 klocal
  18. ims_denoised = riceVST_EUI(ims_denoised ,sigmah,'A');
  19. t_time(p,q)=toc;



  20. a=Mask;a=repmat(a,[1 1 numDWI]);
  21. ind1=find(a>0);
  22. PSNR_noisy(p,q)= PSNR(dwi(ind1),im_r(ind1));
  23. %psnr_noisy_level(level)= PSNR_noisy(q);
  24. %PSNR_noisy(level)= PSNR(dwi(ind1),im_r(ind1));
  25. PSNR_denoised(p,q) = PSNR(dwi(ind1),ims_denoised(ind1));
  26. %psnr_denoised_level(level) = PSNR_denoised(q);
  27. %PSNR_denoised(level) = PSNR(dwi(ind1),ims_denoised(ind1));

  28. q=q+1;
  29. end

  30. end
复制代码

新手

7 麦片

财富积分


050


3

主题

6

帖子

0

最佳答案
 楼主| 发表于 2020-3-24 15:05:39 | 显示全部楼层

我试试哈  真的谢谢你 感谢感谢

MATLAB 基础讨论
版块优秀回答者

入门

274 麦片

财富积分


50500


20

主题

501

帖子

40

最佳答案
  • 关注者: 2
发表于 2020-3-24 15:07:27 | 显示全部楼层
for j =1:1:10;

im_r=sqrt((dwi+level*randn(size(dwi))/100).^2+(level*randn(size(dwi))/100).^2);
idata  = im_r.^2;
tdata  = idata(1:40,1:40,:);

for i  = 1:numDWI   
   tbg = tdata(:,:,i);
   sigmas(j, i) = sqrt(mean(tbg(:))/2);
end
sigmah(j)= mean(sigmas(j, 2:end));
end

新手

7 麦片

财富积分


050


3

主题

6

帖子

0

最佳答案
 楼主| 发表于 2020-3-24 15:20:09 | 显示全部楼层
onlye_caisA 发表于 2020-3-24 15:07
for j =1:1:10;

im_r=sqrt((dwi+level*randn(size(dwi))/100).^2+(level*randn(size(dwi))/100).^2);

谢谢你哈  二楼这个方法可行  您有兴趣也可以一起学习下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表