首页 > 解决方案 > 如何在 Matlab 工作区中存储矩阵的所有列

问题描述

抱歉标题含糊不清,但我不知道如何正确命名。

假设我有这个向量:

v=[2 5 8]';

我的数字范围如下:

x=2:4

我想创建一个 for 循环,将向量乘以 2,然后使用这个新创建的向量并将其乘以 3,然后使用它并将其乘以 4。我本质上想要的是一个 3 x 3 矩阵

当我编写这样的代码时:

v=[2 5 8]';

for i= 2:4
    k=v*i
end

这不起作用,因为

a) 而不是乘以循环中的下一个数字,它只是将元素添加到自身,即(在第二次迭代中我想要 (12, 30, 48)' 而不是 (6,15,24)'

b) 它不会在工作区中存储所有 3 组值。

编辑

for i=1:1:length(x)
       c1=fftshift(fft(u0z));
       c2=exp(-1j*(p^2*x(i)/(2*lamda))).*c1;
       c3=ifft(ifftshift(c2));
       u1=exp(1j*lamda*(n(i)^2-1)*x(i)/2).*c3;
       u0z=u1
    end

编辑 2

for k=1:1:length(x)
   c1=fftshift(fft(u0z));
   c2=exp(-1j*(p^2*x(k)/(2*lamda))).*c1;
   c3=ifft(ifftshift(c2));
   u1=exp(1j*lamda*(n(k)^2-1)*x(i)/2).*c3;
   u0z=u1;
   mat(:,k)=u0z;
end

标签: matlabmatrix

解决方案


使用 MATLABcumprod和隐式扩展(对于 R2016b 之前的 MATLAB,您需要这样做bsxfun),这是一个单行:

v * cumprod(x)
%  bsxfun(@times, v, cumprod(x))

ans =
     4    12    48
    10    30   120
    16    48   192

希望有帮助!


推荐阅读