【问题标题】:plotting graphs from every changing loop in matlab [closed]从matlab中每个变化的循环中绘制图形[关闭]
【发布时间】:2013-05-10 09:20:01
【问题描述】:

我在我的 matlab 代码中遇到了一些奇怪的问题,这是我的代码的一部分:

for k=1:length(box11)
    num_pts1(k)=sum(length(find(box11(:,k)>0)));
    size1=sum(length(find(box11(:,:)>0)));
    perc1(k)=(num_pts1(k)/size1)*100;
end
plot(delta,perc1(k),'*')

但是,问题是我在我的情节中修复了 perc1。所以我在图中看到一条直线。但我想有不同的数字给我一条曲线,因为 k 正在改变每个循环,所以图表也应该改变.. plzzzzzzzzzzzzzzzz,任何帮助:( !!!

【问题讨论】:

  • 你不告诉我们box11delta是什么+你只是在绘制一个数据点perc1(k)
  • 嗨,这是 box11:box11=flipud(full(sparse(delta11,Sref11,delta11)));其中 delta11 和 Sref11 是两个矩阵 51*1
  • 什么是delta?如果要绘制它,它需要与perc1 大小相同。
  • 是的 delta 和 Sref 都在相同的大小 51*1

标签: matlab loops plot


【解决方案1】:

你需要在循环中plot

for k=1:length(box11)
    num_pts1(k)=sum(length(find(box11(:,k)>0)));
    size1=sum(length(find(box11(:,:)>0)));
    perc1(k)=(num_pts1(k)/size1)*100;
    plot(delta,perc1(k),'*'); hold on % Note the "hold" command!
end

【讨论】:

  • 您好,感谢您的回复。但不幸的是我遇到了同样的问题:(
【解决方案2】:

如果您的 box11 矩阵包含不同数量的每列 >0 的元素,则代码可以正常工作。我认为问题在于您的数据,而不是您的代码。以下是带有一些虚拟数据的稍微整理的代码版本,它可以正常工作:

% Create a dummy box11 matrix
box11 = round(rand(15,58));

% Pre-allocate variables
num_pts1 = zeros(length(box11),1);

for k=1:length(box11)
    num_pts1(k)=sum(length(find(box11(:,k)>0)));       
end

size1=sum(length(find(box11(:,:)>0)));
perc1=(num_pts1/size1)*100;
delta = 1:length(perc1);

plot(delta,perc1,'*')

它会产生以下图(在 Octave 中,在 MATLAB 中应该类似):

【讨论】:

  • 嗨,非常感谢。 delta=abs(Sref-S) 其中 S 和 Sref 是相同的矩阵大小(51 行和 1 列)...然后 delta 也是相同的大小。 perc1(k)=(num_pts1(k)/size1)*100;应该计算百分比。 box11 是我的整个盒子,其中包含许多点,num_pts1 是该盒子内一列中的点数,而 size1 是盒子11 内的点数。我的期望数字应该显示新数字中每列的百分比,因此我的期望是曲线应该向上或向下变化一点,因为 perc1(k) 每次都在变化。
  • 提前感谢您的帮助,我正在等待您的回复,希望您能帮助我
  • 如果我们有完整的代码而不是被滴灌的信息会容易得多。使用我回答中的数据,它可以按预期工作。我的box11 矩阵在任何地方基本上都是零,期望每列有一个元素> 0。由于有 51 个元素,因此百分比始终为 1/51 = 1.96%。你检查过你的box11 矩阵吗?这些数字是您期望的吗?您是否尝试过手动计算百分比以检查您的算法是否正确?
  • 好的,一列的百分比将是 1.96%...但是这个百分比应该改变,因为第二列中大于 0 的元素也会改变。那么百分比也会改变!你得到我的意见了吗?
  • 不,百分比不会改变(至少对于我的虚构数据而言),因为在box11 矩阵中每列总是只有一个 >0 的元素。正如我所说,我们无权访问您的数据和您的整个代码。
猜你喜欢
  • 2016-02-09
  • 2022-11-16
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 2019-06-30
  • 1970-01-01
相关资源
最近更新 更多