首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变参数值图中的问题

变参数值图中的问题
EN

Stack Overflow用户
提问于 2013-07-29 02:58:44
回答 1查看 185关注 0票数 1

我需要绘制一个关于一个变化参数k的信号恢复图,当该k的误差最小时,它将被选择,发送的信号用transmitted表示,接收到的信号received通过一个高斯白噪声,由函数Quantizer量化。我计算失真error= (transmitted(channel,time) - received(channel,time))^2。我想要为k参数的不同值绘制传输的vs失真信号,但是在循环内部,我如何将这些值存储在一个矩阵中,这样我就可以绘制,然后看到哪个k的值的误差最小。在当前代码中,只存储最后的迭代值,而我希望有一个文件,在该文件中,恢复的信号与每一个k的两个通道一起存储,以便稍后进行绘图。请帮助如何继续。

代码语言:javascript
复制
k=10;trials=5;
data=dlmread('b1.txt');
transmitted=data';
data=dlmread('b2.txt');
received=data';
[channels time] = size(transmitted)  % channels=2 time = 1024
tclass=zeros(k,time);

c=cell(k);

for iter=1:k
    [prot,class]=Quantizer(received',iter,trials); 
tclass(noprot,:)=class;
c{noprot}=prot;
recovered = prot(class',:);
    error=calculate_distortion(transmitted,recovered);

      plot(transmitted,'r');hold on;
      plot(recovered,'g');
end

function error = calculate_distortion(transmitted,received)
channels=2;time=1024;
for s=1:channels
        for t=1:time 
error= transmitted(channel,time) - received(channel,time))^2
end
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-29 08:52:16

要在每次迭代中收集错误,可以在循环中进行替换。

代码语言:javascript
复制
error=calculate_distortion(transmitted,recovered);

使用

代码语言:javascript
复制
error(iter)=calculate_distortion(transmitted,recovered);

还请注意,您也可以简单地将该行替换为

代码语言:javascript
复制
error(iter)= sum((transmitted(:) - recovered(:)).^2);

不需要调用这个函数。

然后你就可以写一些情节了

代码语言:javascript
复制
plot([1:k],error,'-o')

编辑:

下面是一个示例,说明如何循环收集recoverederror,然后绘制最佳结果:

代码语言:javascript
复制
ks = [1:k];
for iter=ks

    % ....
    % processing here .... 
    % ....
    vec = prot(class',:);
    recovered(:,:,iter) = vec;
    error(iter)= sum((transmitted(:) - vec(:)).^2);        
end

[minval imin ]=min(error);
figure, plot(ks,error,'o-k')
hold on, plot(ks(imin),error(imin),'or','MarkerFaceColor','r')

figure, hold on
plot(transmitted(1,:),'-k')
plot(recovered(1,:,imin),':g') % substitute with or add received if you like

figure, hold on
hold on, plot(transmitted(2,:),'-k')    
plot(recovered(2,:,imin),':g')

请注意,误差计算可以通过一些按摩从循环中取出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17915422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档