MATLAB Central Discussions - Join the conversation!
メインコンテンツ

結果:


goc3
goc3
最後のアクティビティ: 2024 年 10 月 21 日

Always!
29%
It depends
14%
Never!
21%
I didn't know that was possible
36%
1810 票
goc3
goc3
最後のアクティビティ: 2024 年 12 月 3 日 13:54

I was browsing the MathWorks website and decided to check the Cody leaderboard. To my surprise, William has now solved 5,000 problems. At the moment, there are 5,227 problems on Cody, so William has solved over 95%. The next competitor is over 500 problems behind. His score is also clearly the highest, approaching 60,000.
Please take a moment to congratulate @William.
goc3
goc3
最後のアクティビティ: 2024 年 9 月 8 日

Base case:
Suppose you need to do a computation many times. We are going to assume that this computation cannot be vectorized. The simplest case is to use a for loop:
number_of_elements = 1e6;
test_fcn = @(x) sqrt(x) / x;
tic
for i = 1:number_of_elements
x(i) = test_fcn(i);
end
t_forward = toc;
disp(t_forward + " seconds")
0.10925 seconds
Preallocation:
This can easily be sped up by preallocating the variable that houses results:
tic
x = zeros(number_of_elements, 1);
for i = 1:number_of_elements
x(i) = test_fcn(i);
end
t_forward_prealloc = toc;
disp(t_forward_prealloc + " seconds")
0.035106 seconds
In this example, preallocation speeds up the loop by a factor of about three to four (running in R2024a). Comment below if you get dramatically different results.
disp(sprintf("%.1f", t_forward / t_forward_prealloc))
3.1
Run it in reverse:
Is there a way to skip the explicit preallocation and still be fast? Indeed, there is.
clear x
tic
for i = number_of_elements:-1:1
x(i) = test_fcn(i);
end
t_backward = toc;
disp(t_backward + " seconds")
0.032392 seconds
By running the loop backwards, the preallocation is implicitly performed during the first iteration and the loop runs in about the same time (within statistical noise):
disp(sprintf("%.2f", t_forward_prealloc / t_backward))
1.08
Do you get similar results when running this code? Let us know your thoughts in the comments below.
Beneficial side effect:
Have you ever had to use a for loop to delete elements from a vector? If so, keeping track of index offsets can be tricky, as deleting any element shifts all those that come after. By running the for loop in reverse, you don't need to worry about index offsets while deleting elements.
goc3
goc3
最後のアクティビティ: 2024 年 6 月 7 日

There are a host of problems on Cody that require manipulation of the digits of a number. Examples include summing the digits of a number, separating the number into its powers, and adding very large numbers together.
If you haven't come across this trick yet, you might want to write it down (or save it electronically):
digits = num2str(4207) - '0'
That code results in the following:
digits =
4 2 0 7
Now, summing the digits of the number is easy:
sum(digits)
ans =
13
goc3
goc3
最後のアクティビティ: 2024 年 9 月 30 日

quick / easy
21%
themed / in a group
20%
challenge (e.g., banned functions)
13%
puzzle / game
16%
educational
28%
other (comment below)
3%
117 票
goc3
goc3
最後のアクティビティ: 2024 年 7 月 22 日

isstring
11%
ischar
7%
iscellstr
13%
isletter
21%
isspace
9%
ispunctuation
37%
2455 票
Don't use / What are Projects?
26%
1–10
31%
11–20
15%
21–30
9%
31–50
7%
51+ (comment below)
12%
4070 票
goc3
goc3
最後のアクティビティ: 2024 年 10 月 7 日

2
17%
3
12%
4
59%
6
4%
8
5%
Other (comment below)
3%
6419 票
numel(v)
6%
length(v)
13%
width(v)
14%
nnz(v)
8%
size(v, 1)
27%
sum(v > 0)
31%
2537 票
ismissing( { [ ] } )
26%
ismissing( NaN )
18%
ismissing( NaT )
11%
ismissing( missing )
21%
ismissing( categorical(missing) )
9%
ismissing( { '' } ) % 2 apostrophes
16%
896 票
goc3
goc3
最後のアクティビティ: 2024 年 4 月 10 日

isempty( [ ] )
10%
isempty( { } )
13%
isempty( '' ) % 2 single quotes
13%
isempty( "" ) % 2 double quotes
24%
c = categorical( [ ] ); isempty(c)
18%
s = struct("a", [ ] ); isempty(s.a)
22%
1324 票
sort(v)
8%
unique(v)
16%
union(v, [ ])
17%
intersect(v, v)
14%
setdiff(v, [ ])
12%
All return sorted output
33%
1193 票
s = ['M','A','T','L','A','B']
9%
char([77,65,84,76,65,66])
7%
"MAT" + "LAB"
21%
upper(char('matlab' - '0' + 48))
17%
fliplr("BALTAM")
17%
rot90(rot90('BALTAM'))
30%
2929 票
eye(3) - diag(ones(1,3))
11%
0 ./ ones(3)
9%
cos(repmat(pi/2, [3,3]))
16%
zeros(3)
20%
A(3, 3) = 0
32%
mtimes([1;1;0], [0,0,0])
12%
3009 票
1
33%
2
34%
3
18%
4
5%
5
3%
6+
6%
1643 票
goc3
goc3
最後のアクティビティ: 2023 年 8 月 18 日

<= 6 GB
10%
7–12 GB
26%
13–22 GB
34%
23–46 GB
19%
47–90 GB
6%
>= 91 GB
6%
15925 票
goc3
goc3
最後のアクティビティ: 2023 年 7 月 18 日

Yes, the available tools are great
12%
Yes, the available tools need help
6%
No, but I would like to
14%
No, it is not important to me
7%
What is test-driven development?
61%
1955 票
goc3
goc3
最後のアクティビティ: 2023 年 7 月 18 日

Always
12%
Sometimes
11%
In the past, but not now
3%
Never
20%
What is Simulink Project?
53%
2443 票
goc3
goc3
最後のアクティビティ: 2023 年 6 月 9 日

Always
8%
Sometimes
9%
In the past, but not now
2%
Never
23%
What is MATLAB Project?
58%
4533 票
goc3
goc3
最後のアクティビティ: 2021 年 11 月 7 日

A bunch of quick, simple problems
16%
A structured, educational set
15%
Brain-teasers
16%
Random miscellany
3%
Something else
2%
What are Problem Groups?
49%
1777 票
Go to top of page