【发布时间】:2016-04-01 03:04:45
【问题描述】:
我有我的矩阵“A”,用户可以定义它的大小,例如,用户为矩阵 A 定义一个 3x5 的大小:
[1 2 3 4 5]
A= [2 4 6 8 3]
[2 4 5 7 8]
我需要像这样将行转换成新的向量:
A1=[1 2 3 4 5]
A2=[2 4 6 8 3]
A3=[2 4 5 7 8]
但问题是,由于用户可以修改矩阵的大小(添加/删除行),我需要获取向量。比如用户定义了一个新的矩阵A的大小为5x5,所以我需要
A1=[...]
A2=[...]
...
A5=[...]
我不想手动放置新向量,因为行数可能会变得太大(大约 500 或更多)并且手动放置每个新向量几乎是不可能的。所以我需要 MatLab 自动执行此操作。
我有一个矩阵,我需要行,但每一行都必须是一个向量,因为我需要分别计算每个向量。
我有这个示例代码
dim=5; % Define by User
dim1=15*dim;
A=[];
B=[];
x=round(rand(dim1));
for i=1:dim
A(i,1)=x(i);
end
for i=1:dim1
B(i,1)=x(i+1);
end
B=vec2mat(B,15);
我有矩阵 B,但我需要将它的行放入单独的向量中:
B1= B(1,:)
B2= B(2,:)
...
B5=B(5,:)
问题是 dim 可能是 500 或更多,并且手动编写这么多向量非常困难。所以我需要帮助来完成循环。
---------------- 编辑--------------
问题是这样的:
用户定义一个矩阵,例如:
[1 2 3 4 5]
A= [2 4 6 8 3]
[2 4 5 7 8]
所以,程序必须向我显示不同向量中的行
A1=[1 2 3 4 5]
A2=[2 4 6 8 3]
A3=[2 4 5 7 8]
如果用户给我其他矩阵
[1 2 3 4 5]
[2 4 6 8 3]
A= [2 4 5 7 8]
[4 5 6 6 7]
[8 2 3 3 1]
程序必须向我展示
A1=[1 2 3 4 5]
A2=[2 4 6 8 3]
A3=[2 4 5 7 8]
A4=[4 5 6 6 7]
A5=[8 2 3 3 1]
用户定义的矩阵行的范围在 30 到 1200 之间。所以,我需要 MatLab 使每一行的向量自动生成。
我尝试以这种方式定义每个向量:
AA = sym('A%d', [rows 1]);
所以我有 A1、A2、A3 等……然后,我可以做(最后一个例子)
A1=[1 2 3 4 5]
A2=[2 4 6 8 3]
A3=[2 4 5 7 8]
A4=[4 5 6 6 7]
A5=[8 2 3 3 1]
但是,我不知道如何制作那个循环。
谢谢
【问题讨论】:
-
为什么你需要这样做?您可以使用冒号将行传递给您想要的任何函数,没有理由将它们分隔成唯一的变量。
-
Nonononono... 当
A(1,:)完全可用时,为什么要创建500 个新变量?并且更容易循环。 -
我编辑了这个问题,所以我希望我的观点正确。
-
@JoseLGutierrezA 您的观点并不清楚,您需要这样做的原因是。您想要做的通常是糟糕的编程习惯,实际上没有必要这样做。
-
我同意其他人的观点。您没有说明为什么需要将这些向量放在单独的变量中。每行都可用于通过数组索引进行的任何操作。也许如果你解释你的矢量处理?例如,假设您将第 33 行与第 55 行相乘,您可以使用 A(33, :).*A(55, :)
标签: matlab matrix vector size rows