在我的图中,我有2个轴,第一个是信号的时间序列,第二个是信号的时间序列ifft.我想添加一个包含信号频谱图的第3轴.我怎样才能做到这一点?
% Create the raw signal
fs = 40;
t = 0:( 1/fs ):4;
y1 = [ sin( 2*pi*5*t( t<=2 ) ), sin( 2*pi*10*t( t>2 ) ) ];
% Compute the ifft of the signal
Fy1 = abs(ifft(y1));
N = numel(t);
idx = 1:numel(Fy1) / 2;
f = fs*(0:(N-1)) / N;
% Plot the raw signal as a time series
subplot(311);
plot(t,y1,'k');
xlabel('Time (s)');
ylabel('Amplitude');
% Plot the spectrum of the signal
subplot(312);
plot(f(idx),2*Fy1(idx),'k')
xlabel('Frequency (cycles/second)');
ylabel('Amplitude');
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用该 …
我有一个每两周记录一次的年度温度测量数据集.数据类似于以下内容:
t = 1:14:365;
% GENERATE DATA
y = 1 + (30-1).*rand(1,length(t));
y1 = 20*sin(2*pi*t/max(t)); % Annual variation °C
y1(y1<0) = [];
tt = 365/14;
time = 1:tt:365;
plot(time,y1,'-o');
Run Code Online (Sandbox Code Playgroud)
它明显遵循年度温度循环.
由此我想知道是否可以在数据上添加正弦函数(代表昼夜温度范围)?例如,从每两周一次的数据,如果我们插值系列有8760次测量,即每小时测量,该系列是可信的,将需要通过一个昼夜温差循环,除了每年的温度循环为特征.此外,昼夜温度周期需要是当时温度测量的函数,即在夏季比冬季更大.所以也许最好先使用线性插值来获取数据来表示每小时的间隔,然后添加正弦函数.有没有把它写入脚本的方法?或者有没有人对如何准确地实现这一点有意见?
任何人都可以建议为什么以下示例代码不起作用:
require(biwavelet)
t <- seq(1/24, 365, 1/24)
A <- 2
fs <- 1/24
y <- A + sin(2*pi*fs*t)
d = cbind(t,y)
wt.t1 <- wt(d)
plot(wt.t1)
Run Code Online (Sandbox Code Playgroud)
它会生成错误说明:
Error in image.default(x$t, yvals, t(zvals), zlim = zlims, ylim = rev(range(yvals)), :
invalid z limits
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
额外:
回应Gavin Simpsons回答:如果我保持数据仅包含一个频率但改变时间向量,则代码工作正常.
require(biwavelet)
A <- 2
fs <- 1/24
y <- A + sin(2*pi*fs*t)
d <- cbind(seq(1,8760), y)
wt.t1 <- wt(d)
plot(wt.t1)
Run Code Online (Sandbox Code Playgroud) 关于在matlab中绘制伪彩色图,我有一个非常基本的问题.如果我有一个情节如下:
d1 = 1:4;
d2 = 1:4;
dat = [2,3,4,1;...
3,4,7,1;...
8,7,6,1;...
2,3,3,1];
pcolor(d1,d2,dat);shading interp
Run Code Online (Sandbox Code Playgroud)
那么我可以在这个图上绘制一条线来突出显示某些值,例如通过值= 5画一条线吗?请注意,我想避免使用contourf,并希望在此实例中使用pcolor.
比如说,如果我有一个数据框如下:
Date1 <- seq(from = as.POSIXct("2010-05-01 02:00"),
to = as.POSIXct("2010-10-10 22:00"), by = 3600)
Dat <- data.frame(DateTime = Date1,
x1 = rnorm(length(Date1)))
Run Code Online (Sandbox Code Playgroud)
每次测量之间的间距是1小时.如何在今年剩余时间内使用NA填充此数据框,其中最终解决方案的长度应为8760,即全年的每小时测量值.例如,我想将DateTime列扩展到2010-01-01 00:00到2010-12-31 23:00,但是对于已添加到原始日期的日期,x1列为NA数据框(如果有意义的话).我想提出一个可以有多年的解决方案,即如果数据从2009年5月延伸到2012年9月那么最终的解决方案应该有这个数据集但是缺少的时间即从2009年1月到2012年12月到用NA填充.我该如何解决这个问题?
我有一个2D线图:
d3 = [1, 3, 5, 6, 8, 9];
plot(d3, '-ob');
Run Code Online (Sandbox Code Playgroud)
我想知道如何在线图的标记中插入一个值,例如将y值插入标记的中心.例如:

这可能吗?
R中是否有方法为具有不同组合的数据帧中的每个不同变量运行GLM,例如
如果我有4个解释变量,我可以将Y建模为
m1 = glm(Y ~ V1, data = d)
m2 = glm(Y ~ V1 + V2, data = d)
m3 = glm(Y ~ V1 + V2 + V3, data = d)
m4 = glm(Y ~ V1 + V2 + V3 + V4, data = d)
Run Code Online (Sandbox Code Playgroud)
但是,我也可以
m5 = glm(Y ~ V1 + V2 + V4, data = d)
Run Code Online (Sandbox Code Playgroud)
等等.
R中是否有方法可以选择数据框中所有不同的变量组合,以查看哪些变量可以作为最佳预测变量?
我使用interp1来提交一些数据:
temp = 4 + (30-4).*rand(365,10);
depth = 1:10;
dz = 0.5; %define new depth interval
bthD = min(depth):dz:max(depth); %new depth vector
for i = 1:length(temp);
i_temp(i,:) = interp1(depth,temp(i,:),bthD);
end
Run Code Online (Sandbox Code Playgroud)
在这里,我通过将测量值从1 m增量插值到0.5 m增量来增加测量值的分辨率.这段代码工作正常,它给了我正在寻找的矩阵.但是,当我将其应用于我的实际数据时,运行需要很长时间,主要是因为我正在运行一个运行不同单元格的附加循环.有没有办法在不使用循环的情况下实现上述内容,换句话说,是否有更快的方法?
我有两个时间序列:
dat = [0,2,3,0,2,2,0,0,1,0.8,3,4,6,7,4,4,3,0,1,3,2.2,0];
dat2 = dat+.5;
time = 1:length(dat);
plot(time,dat);
hold on;
plot(time,dat2,'r');
Run Code Online (Sandbox Code Playgroud)
我想及时发现这两个向量的连续数值大于1的区域.因此,对于这个特定的例子,两个向量在10到18之间具有大于1的值.但是,它们在其他几个场合也具有大于1的值.我可以通过首先生成一个矩阵来获得大于1的值的索引:
data = [dat',dat2'];
Run Code Online (Sandbox Code Playgroud)
然后使用find
r1 = data>1;
Run Code Online (Sandbox Code Playgroud)
这将为我提供每个值大于1的位置.接下来我想找到在最长持续时间内保持值> 1的时间(在哪些行之间).我怎样才能做到这一点?
我有以下功能:
example_Foo <- function( ...,FigureFolder){
# check what variables are passed through the function
v_names <- as.list(match.call())
variable_list <- v_names[2:(length(v_names)-2)]
# create file to store figures
subDir <- c(paste(FigureFolder,"SavedData",sep = "\\"))
}
Run Code Online (Sandbox Code Playgroud)
显然这只是该功能的开始,但我已经遇到了一些问题。在这里,我尝试定义最终希望保存结果的目录。使用该函数的示例是:
weight <- c(102,20,30,04,022,01,220,10)
height <- c(102,20,30,04,022,01,220,10)
catg <- c(102,20,30,04,022,01,220,10)
catg <- matrix(height,nrow = 2)
FigureFolder <- "C:\\exampleDat"
# this is the function
example_Foo(catg,FigureFolder)
Run Code Online (Sandbox Code Playgroud)
这会产生以下错误:
Error in paste(FigureFolder, "SavedData", sep = "\\") :
argument "FigureFolder" is missing, with no default
Run Code Online (Sandbox Code Playgroud)
我猜测是由于函数不知道“FigureFolder”是什么,我的问题是如何通过函数传递这个字符串?