Matlab 用函数表示矩阵
我试图创建一个具有特定函数的矩阵K 我的代码如下Matlab 用函数表示矩阵,matlab,matrix,Matlab,Matrix,我试图创建一个具有特定函数的矩阵K 我的代码如下 K=zeros(360*360,3); for m = 0:360 for n = 0:360 for d=0:5 U1(1,1)= cos(m)+cos(m+n); U1(1,2)= sin(m)+sin(m+n); U1(1,3)=-d; K(m,n)=(U1); end end end 然而,我
K=zeros(360*360,3);
for m = 0:360
for n = 0:360
for d=0:5
U1(1,1)= cos(m)+cos(m+n);
U1(1,2)= sin(m)+sin(m+n);
U1(1,3)=-d;
K(m,n)=(U1);
end
end
end
然而,我不断得到一个错误,“下标索引必须是实正整数或逻辑数。”
有人能解释一下如何解决这个问题吗?K是一个(360^2)x3矩阵。您试图做的似乎是:
K(m*n, :) = U1;
这里也会有问题,因为您的m
和n
是从0
开始的,而不是从1
开始的
我宁愿这样做:
K = zeros(360, 360, 3);
for m = 1:360
for n = 1:360
for d = 0:5
K(m, n, 1) = cos(m) + cos(m+n);
K(m, n, 2) = sin(m) + sin(m+n);
K(m, n, 3) = -d;
end
end
end
这将为您提供一个360x360x3 3D矩阵,m&n将直接索引到该结构中
编辑
根据@Trippy下面的评论,代码需要修改如下:
K = zeros(360*360, 3);
for m = 0:359
for n = 1:360
for d = 0:5
K(m*360 + n, 1) = cos(m) + cos(m+n);
K(m*360 + n, 2) = sin(m) + sin(m+n);
K(m*360 + n, 3) = -d;
end
end
end
这将填充行主形式中的矩阵K,我假设这就是您要查找的。您得到错误,因为
m
和n
从0开始,它们应该从1开始。Hi@Kamtal下标赋值维度不匹配。是我更改m和n从1开始时得到的错误。@Trippy:这是因为K(m,n)=(U1)代码>。请看下面我的答案。您还需要执行K=0([360360,3])代码>和K(m,n,:)=U1代码>您好,我正在尝试生成一个(360^2,3)矩阵,每一行都是U1的一个解决方案。最终的想法是在3d绘图上绘制K的每一行。谢谢,这很有效。你能解释一下我之前做错了什么吗@罗尼Michael@Trippy:关键是矩阵索引不正确。尝试一个简单的例子,将360替换为3,将359替换为2。@Trippy:另一方面,matlab中的sin
和cos
函数是在弧度输入上运行的,而不是在度输入上运行的。如果你想这样做的话,你需要把角度映射成弧度。