【问题标题】:plotting from a loop in matlab从matlab中的循环绘制
【发布时间】:2013-05-09 20:22:46
【问题描述】:

我在我的 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。所以我在图中看到一条直线。但我想有不同的数字给我一条曲线.. plzzzzzzzzzzzzzzzz,任何帮助:( !!!

【问题讨论】:

  • 我不清楚有两件事:你试图得到的结果与你得到的结果以及box11 是什么。请对此更清楚。 (附上你得到的情节可能会有所帮助)
  • 嗨,这是 box11:box11=flipud(full(sparse(delta11,Sref11,delta11)));其中 delta11 和 Sref11 是两个矩阵 51*1
  • 你的意思是plot(delta,perc1,'*') 吗?否则你只是在绘制一个点,perc1(k),其中k 是legnth(box11)。还有delta是什么?
  • 我添加的代码给了我一条直线,这意味着 k 是固定的.. 虽然它应该是一条曲线,因为 k 正在改变每个循环.. 希望我现在可以解释一下 :) !!
  • 到目前为止没有帮助 :( :( :(

标签: matlab plot line curve


【解决方案1】:

您应该记得length 返回数组的长度。所以,在指令中

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

运算符sum 作用于标量(等于数组find(box11(:,k)>0) 的长度),而不是数组。指令也是如此

size1=sum(length(find(box11(:,:)>0)));

所以,如果find(box11(:,k)>0) 的长度不随k 而变化,那么您的perc1 将保持不变。

【讨论】:

  • 不幸的是,没有明白你的意思:(..那我应该改变什么...非常感谢
  • 在涉及num_pts1和size1的两条指令中可能不需要length。在继续之前,请阅读一些关于 Matlab 的介绍性教程/书籍。
  • mmmmm :(,问题仍然存在 :(.. 我需要长度才能在那里
  • 到目前为止没有帮助 :( :( :(
  • 有什么理由拥有sum(length(find(box11(:,k)>0)))? length返回一个数字,为​​什么sum是一个数字?
猜你喜欢
  • 2016-02-09
  • 2015-07-24
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 2016-10-22
  • 1970-01-01
相关资源
最近更新 更多