Matlab中将一个向量矩阵转化为一列向量矩阵

老师给的一个程序,但我不懂第4行什么意思,行数除以列数。 还有,我输入一个4*10的矩阵,结果:
错误使用 zeros
Size 输入必须为整数。

出错 zhuanlie (line 5)
A=zeros(n1*n1,dn);

function Y=zhuanlie(X)
%%将n1*n1的X向量矩阵转化为1列向量矩阵
%%输入的n1*n1的向量矩阵X,其即矩阵中的元素为1*dn的向量,但形式为n1*n2的普通矩阵
1. p=1;
2. n1=size(X,1);
3. n2=size(X,2);
4. dn=n2/n1; %向量的元素个数
5. A=zeros(n1*n1,dn);
7. m=1;
8. for i=1:n1
9. for j=1:n1
10. A(m,:)=X(i,(j-1)*dn+1:j*dn);
11. m=m+1;
end
end

Y=A;
最新回答
暖妹

2024-05-05 08:15:07

函数输入是个n1 * n2矩阵,返回(n1^2) * (n2/n1)的矩阵。n2要能整除n1。

你应该输入4*8或4*12之类的矩阵。


函数写的很麻烦,可以简化下:

function Y = zhuanlie(X)
    Y = reshape(X', size(X,2)/size(X,1), [])';
end

 或直接使用句柄:

zhuanlie = @(X)reshape(X', size(X,2)/size(X,1), [])';