Arrays Matlab用值创建一个矩阵
我在matlab中编写了一个函数,它使用循环生成一个矩阵。我想知道是否有可能在没有循环的情况下生成相同的结果。X可以是1 X 50、2 X 50、3 X 50等。。。每行每列的值增量范围为1到50 例如Arrays Matlab用值创建一个矩阵,arrays,performance,matlab,matrix,Arrays,Performance,Matlab,Matrix,我在matlab中编写了一个函数,它使用循环生成一个矩阵。我想知道是否有可能在没有循环的情况下生成相同的结果。X可以是1 X 50、2 X 50、3 X 50等。。。每行每列的值增量范围为1到50 例如 1 x 1=1 2x1=1 3x1=1 1 x 2=2 2x2=2 3x2=2 1 x 50=50 2x50=50 3 x 50=50 我的功能: function [i] = m(x) [a, b] = size(x); i = zeros(a, b); for
- 1 x 1=1
- 2x1=1
- 3x1=1
- 1 x 2=2
- 2x2=2
- 3x2=2
- 1 x 50=50
- 2x50=50
- 3 x 50=50
function [i] = m(x)
[a, b] = size(x);
i = zeros(a, b);
for c = 1 : a
i(c, :) = (1:size(x,2));
end
end
谢谢。使用:
一些替代方案是
output = ones(size(x,1),1)*(1:size(x,2));
及
使用:
一些替代方案是
output = ones(size(x,1),1)*(1:size(x,2));
及
试试这个:
N = 3;
M = 50;
x = repmat((1:N)',M,1);
y = reshape(repmat((1:M)',1,N)',N*M,1);
%z = x.*y
z = strcat(num2str(x),'x',num2str(y),'=',num2str(x.*y))
这将为您的问题提供相同的格式。尝试以下方法:
N = 3;
M = 50;
x = repmat((1:N)',M,1);
y = reshape(repmat((1:M)',1,N)',N*M,1);
%z = x.*y
z = strcat(num2str(x),'x',num2str(y),'=',num2str(x.*y))
这将在您的问题中给出相同的格式。repmat()的另一个替代选项是
repmat
()的一种替代方法是
非常感谢你。我不知道雷普马特。我一直在尝试重塑。非常感谢。我不知道雷普马特。我一直在尝试重塑。谢谢你的替代方法!谢谢你的另一种方法!感谢您分享您的解决方案。感谢您分享您的解决方案。
out = bsxfun(@times,ones(size(x,1),1),1:size(x,2))