相关疑难解决方法(0)

MATLAB:复制向量'n'次

我有一个矢量,例如

vector = [1 2 3]
Run Code Online (Sandbox Code Playgroud)

我想在自己内部复制n次,即如果n = 3,它最终会:

vector = [1 2 3 1 2 3 1 2 3]
Run Code Online (Sandbox Code Playgroud)

如何为n的任何值实现此目的?我知道我可以做以下事情:

newvector = vector;
for i = 1 : n-1
    newvector = [newvector vector];
end
Run Code Online (Sandbox Code Playgroud)

这看起来有点麻烦.更有效的方法?

matlab vector

19
推荐指数
2
解决办法
5万
查看次数

变量似乎在每次循环迭代时改变大小 - 什么?

在编写以下Matlab代码时:

for ii=1:n
    x(ii) = foo( ii ); % foo is some function of ii that cannot be vectorized.
end
Run Code Online (Sandbox Code Playgroud)

我得到以下m-lint警告:

变量x似乎在每次循环迭代时改变大小

我的问题:

  1. 这个警告意味着什么?
  2. 为什么每次迭代都会改变变量大小是件坏事?
  3. 怎样才能解决这个问题?

这个问题是不能重复的这一个,因为它与预分配的更一般的问题,而是它的一个特定实例涉及.

iteration matlab memory-management

9
推荐指数
3
解决办法
2万
查看次数

为什么我在这里提出自动广播警告?

function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters)
  m = length(y);
  J_history = zeros(num_iters, 1);

  for iter = 1:num_iters
    ## warning: product: automatic broadcasting operation applied
    theta = theta - sum(X .* (X * theta - y))' .* (alpha / (m .* 2));
    J_history(iter) = computeCost(X, y, theta);
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我的作业,但我不要求你为我做这件事(我实际上认为我已经做过或接近过).我在提到播放的地方已经红了,但是我还是不明白,为什么我在这里收到警告?

warnings mathematical-optimization octave

4
推荐指数
1
解决办法
9629
查看次数