删除时保留句柄矩阵大小

发布于 2024-11-28 13:39:18 字数 170 浏览 2 评论 0 原文

我在图中创建了一组线条。线句柄占据由 imline.empty(0,x) 创建的矩阵。当我删除某一行(使用delete(.))时,矩阵的大小会发生变化。我想通过用空白空间(或其他任何东西)填充矩阵中的特定位置来避免这种情况,以保持数据结构化和矩阵大小相同。最好的方法是什么?

I have created a set of lines in a figure. The line handles occupy a matrix created by imline.empty(0,x). When I delete a certain line (using delete(.)), the matrix changes in size. I want to avoid this by filling that particular place in the matrix with empty space (or anything else) in order to keep the data structured, and the matrix the same size. What is the best way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一场信仰旅途 2024-12-05 13:39:18

基于我的之前的答案,考虑这个例子:

lines = imline.empty(0,10);
for i=1:10
    lines(i) = imline(gca, rand(2,2));
end

现在假设我们要删除第三行和最后一行:

Before

>> whos lines
  Name       Size            Bytes  Class     Attributes

  lines      1x10               96  imline   

>> lines.isvalid
ans =
     1     1     1     1     1     1     1     1     1     1

After

>> delete( lines([3 end]) )

>> whos lines
  Name       Size            Bytes  Class     Attributes

  lines      1x10               88  imline     

>> lines.isvalid
ans =
     1     1     0     1     1     1     1     1     1     0

因此,当 delete-ing 时,数组保持相同的大小...

如果你想实际删除他们的条目来自数组,尝试:

>> lines(~lines.isvalid) = [];
>> size(lines)
ans =
     1     8

Building on my previous answer, consider this example:

lines = imline.empty(0,10);
for i=1:10
    lines(i) = imline(gca, rand(2,2));
end

Now say we want to delete the third and last lines:

Before

>> whos lines
  Name       Size            Bytes  Class     Attributes

  lines      1x10               96  imline   

>> lines.isvalid
ans =
     1     1     1     1     1     1     1     1     1     1

After

>> delete( lines([3 end]) )

>> whos lines
  Name       Size            Bytes  Class     Attributes

  lines      1x10               88  imline     

>> lines.isvalid
ans =
     1     1     0     1     1     1     1     1     1     0

So the array stay the same size when delete-ing...

If you want to actually remove their entries from the array, try:

>> lines(~lines.isvalid) = [];
>> size(lines)
ans =
     1     8
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文