I wonder if the following expressions are already optimized forms for computational efficiency and if not how to rewrite them?
x=linspace(0,1);
0*x; x+1
a=[x;x]
[2*x;a(1,:)]
repmat([1;1;0],1,10);

 採用された回答

Walter Roberson
Walter Roberson 2024 年 3 月 10 日

0 投票

x = 0:1/99:1;
zeros(size(x)); x+1
a=[x;x];
[2*x; x]
repmat([1;1;0],1,10);

3 件のコメント

feynman feynman
feynman feynman 2024 年 3 月 11 日
Thanks! Comparison of 0*x with zeros(size(x)) shows they are close and for 10000 loops the former becomes faster.
Walter Roberson
Walter Roberson 2024 年 3 月 11 日
編集済み: Walter Roberson 2024 年 3 月 11 日
Interesting
When I try it several times, the times vary pretty wildly, including cases where the 0*x comes out much slower.
format long g
testit();
testit();
T = testit()
T = 3×1
0.000366 0.001324 0.000718
function T = testit()
T = zeros(3,1);
N = 10000;
x = linspace(0,1);
start = tic; for K = 1:N; Z = 0*x; end; T(1) = toc(start);
start = tic; for K = 1:N; Z = zeros(size(x)); end; T(2) = toc(start);
start = tic; for K = 1:N; Z = zeros(1,100); end; T(3) = toc(start);
end
feynman feynman
feynman feynman 2024 年 3 月 11 日
, which means 0*x and zeros(size(x)) aren't necessarily better or worse than the other?

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Elementary Math についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by