Matlab 用函数表示矩阵

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

我的代码如下

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
函数是在弧度输入上运行的,而不是在度输入上运行的。如果你想这样做的话,你需要把角度映射成弧度。