【问题标题】:Gauss to solve the set of equations [duplicate]高斯求解方程组
【发布时间】:2014-02-23 14:27:16
【问题描述】:

Matlab 显示此错误:“变量 'result' 似乎在每次循环迭代时都会改变大小。考虑预分配以提高速度”

我的错误在哪里?

代码:

function result = gaussSolutionOfSLAY( Matrix, Vector )

sizeMatrix = size(Matrix);
rows = sizeMatrix(1);
columns = sizeMatrix(2);

extended = [Matrix Vector];

for k = 1:rows                
    if (extended(k,k) ~= 0)
        extended(k,:) = extended(k,:)./extended(k,k);   
        for i = k + 1:columns           
            extended(i,:) = extended(i,:) - extended(k,:)*extended(i,k);
        end
    else
        disp('Division by thero');
        return
    end
end

result = extended(rows, columns);   
for k = rows - 1:-1:1
    result = [extended(k, columns + 1) - sum(extended(k, columns - (length(result) - 1):c) * result) result];    
end

end

【问题讨论】:

  • @user3037421,请不要重复使用旧帖子来解决新问题。如果您有新问题,请发布新帖子。这篇文章曾经是关于预分配的 mlint 警告,现在是关于错误消息。不要这样做! – 此外,请写出问题及其标题,以表明实际问题。标题“高斯求解方程组”并不表示您要问什么。
  • 由于用户为他的新问题发了一个新帖子,我回滚了他对这个问题的编辑,恢复了原来的问题。

标签: matlab


【解决方案1】:

如果您的代码中没有其他错误,这通常是一个警告。当您定义一个具有大小的数组并使用该数组的额外行或列时,就会发生这种情况。如果你这样做,你的代码运行缓慢。这是Matlab中的一种新事物(可能是最近的3或3个版本)。当您更改“结果”时会发生这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多