MATLAB: Plotting Weierstrass time series

MATLABplotsum

Hi, I want to plot the following function. Can anyone help me? Thanks in advance.
gamma = 5, F=1.3, n=30, t=0:0.01:10 (fs = 100Hz, in period of 10 sec = 1000 samples)
Untitled.png
I tried the following code but didn't get this figure!
clc;clear
y=0;
g=5;
F=1.3;
t=0:0.01:10;
for i=1:30
y=y+cos(2*pi*g^i*t)/g^((2-F)*i);
end
plot(t,y)

Best Answer

There seems to be a scaling variable missing for ‘t’ in the ‘x(t)’ calculation, and your ‘t’ vector does not have fine enough resolution to produce the necessary details in ‘x(t)’.
Use:
t = linspace(0, 1, 1E+5);
and you can avoid the loop entirely with:
[T,I] = ndgrid(t, (1:30));
x = cos(2*pi*g.^I.*T)./g.^((2-F)*I);
xs = sum(x,2);
plot(t, xs)
xlim([0 0.2])
I will let you sort the reason that the plot looks appropriate for (0,0.2) although not on (0,1), the reason I mentioned the ‘scaling variable’.