【问题标题】:Create a larger matrix in special case [closed]在特殊情况下创建一个更大的矩阵[关闭]
【发布时间】:2013-05-09 14:13:11
【问题描述】:

我有两个向量:

A=[1 2 3 4]
B=[3 5 3 5]

我想从这些向量中找到一个矩阵,如下所示:

你可以假设cplot matrix,其中x轴是Ay-axisB

c =
 0     4     0     4
 3     0     3     0
 0     0     0     0
 0     0     0     0

或:

 c1=
 0     1     0     1
 1     0     1     0
 0     0     0     0
 0     0     0     0

我的问题是如何自动创建它,因为我有很大的向量。

【问题讨论】:

  • 请解释一下从A和B创建C的逻辑?
  • 问题写得不好...尝试更好地解释您的问题,您一定会得到更多帮助。
  • 我添加了更多细节,希望对您有所帮助
  • 恐怕没有。你想要 (x,y) = (1,3), (2,5), (3,3) 和 (4,5) 的矩阵中的元素吗?您希望该矩阵是什么维度?什么是绘图矩阵?如果您想要绘制 x,y 值:plot([1 2 3 4],[3 5 3 5])
  • 情节([1 2 3 4],[3 5 3 5])。是的,我想要一个显示以下情节的矩阵,然后它将像 c1: 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0

标签: matlab matrix


【解决方案1】:

我假设AB 是坐标,并且您想以矩阵形式“绘制”绘图,所以试试这个:

c = flipud(full(sparse(B, A, B)));

我添加了flipud 向上调整y轴的正方向。

或者,您可以使用以下方法获得二元矩阵:

c1 = flipud(full(sparse(B, A, ones(size(A)))));

重要提示:要使此解决方案起作用,AB 必须包含正整数值。尝试“绘制”具有非正数或非整数位置的矩阵是没有意义的。

示例

A = 1:4; B = [3, 4, 3, 4];   
c = flipud(full(sparse(B, A, B)))
c1 = flipud(full(sparse(B, A, ones(size(A)))))

这会导致:

c =
     0     4     0     4
     3     0     3     0
     0     0     0     0
     0     0     0     0

c1 =
     0     1     0     1
     1     0     1     0
     0     0     0     0
     0     0     0     0

【讨论】:

  • +1,用于反转徽章尝试 =)
  • 嗨,非常感谢。但我收到了这条信息:???在矩阵中使用 ==> 稀疏索引时出错,必须是整数。
  • 这意味着矩阵 AB 包含非整数值。你想如何处理非整数?我建议用roundceil 将它们四舍五入。
  • 你的尝试也得到了我的 +1! (现在问题是 -5)
  • @Eitan T... 是的,现在可以使用了.. 非常感谢
猜你喜欢
  • 2014-11-08
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
相关资源
最近更新 更多