小编Ric*_*k T的帖子

在MATLAB/octave中为n> 100创建更快的Fibonacci函数

我有一个函数告诉我Fibonacci序列中的第n个数字.问题是,当试图在Fibonacci序列中找到更大的数字时它变得非常慢有没有人知道如何解决这个问题?

function f = rtfib(n)
 if (n==1)
     f= 1;
 elseif (n == 2)
     f = 2;
 else
     f =rtfib(n-1) + rtfib(n-2);   
 end
Run Code Online (Sandbox Code Playgroud)

结果,

tic; rtfib(20), toc
ans =  10946
Elapsed time is 0.134947 seconds.

tic; rtfib(30), toc
ans =  1346269
Elapsed time is 16.6724 seconds.
Run Code Online (Sandbox Code Playgroud)

5分钟后我甚至无法获得价值 rtfib(100)

PS:我正在使用八度音阶3.8.1

matlab octave fibonacci number-theory

11
推荐指数
3
解决办法
2663
查看次数

使用fft和ifft不使用整数来改变频率

我知道我可以通过改变变量的整数改变频率偏移,但我怎样才能改变频率使用数字与小数像0.754或1.234567.456.如果我将变量'shift'更改为像5.1 这样的非整数,我得到一个错误,下标索引必须是小于2 ^ 31的正整数或来自行mag2s的逻辑= [mag2(shift + 1:end),0 (1,移位)];

示例下面的问题代码在matlab/octave中使用fft和ifft增加/减少信号的频率 与改变变量一起工作(但它只适用于整数,我需要它也可以使用小数数字).

PS:我正在使用octave 3.8.1,就像matlab一样,我知道我可以通过调整变量ya中的公式来改变频率,但是ya将是从音频源(人类语音)中获取的信号,所以它不会是一个等式.该等式仅用于保持示例简单.是的Fs很大,因为使用的信号文件长约45秒,这就是为什么我不能使用重新采样,因为我在使用时出现内存不足错误.

这是一个动画的youtube视频示例,当我使用测试方程ya = .5*sin(2*pi*1*t)+.2*cos(2*pi*3*t)时,我想要得到的内容我想要让发生,如果我改变的变量转变,从(0:0.1:5)youtu.be/pf25Gw6iS1U请记住,雅将导入音频信号,所以我不会有一个公式可以轻松地调整

clear all,clf

Fs = 2000000;% Sampling frequency
t=linspace(0,1,Fs);

%1a create signal
ya = .5*sin(2*pi*2*t); 

%2a create frequency domain
ya_fft = fft(ya);

mag = abs(ya_fft);
phase = unwrap(angle(ya_fft));
ya_newifft=ifft(mag.*exp(i*phase));

% ----- changes start here ----- %

shift …
Run Code Online (Sandbox Code Playgroud)

matlab signal-processing fft octave ifft

9
推荐指数
1
解决办法
1313
查看次数

基于另一个数组排序顺序对多个数组进行排序

我在matlab/octave中有三个独立的数组,它们都是相互关联的.

我正在尝试根据c的排序对a和b的数组值进行排序(因此,当c排序时,a和b数组的排序顺序与c数组相同).

Example:
Original Array
a= [1.2   2   3   4    5   6]
b= [3     5   6   4.1  7   9]
c= [2.2   1   9   6    8   3]
Run Code Online (Sandbox Code Playgroud)

数组a和b基于c的类型(注意所有数组都是根据数组c排序的顺序排序的)

Final Array that I want:
a= [2   1.2   6   4    5   3]
b= [5   3     9   4.1  7   6]
c= [1   2.2   3   6    8   9]
Run Code Online (Sandbox Code Playgroud)

阿罗哈瑞克

PS:我正在使用matlab/octave,如果有更好的方法,请告诉我

arrays sorting matlab octave multidimensional-array

8
推荐指数
1
解决办法
7396
查看次数

SOX和淡入淡出

我正在尝试为几个波形文件创建淡入和淡出,我不知道总的持续时间(以秒为单位).我阅读了手册,但我看到的示例看起来都需要知道文件的全长.有人可以在不知道wav文件的全长的情况下在5秒内发布淡出淡出的示例并淡出7秒吗?

sox libsox

7
推荐指数
2
解决办法
3875
查看次数

使用octave/matlab代码逐渐/逐渐改变信号的音高

我可以使用resample调整整个信号,我 在这里尝试了相位声码器代码.

我也试过了repmat和插值,我看了fft和interp1

如何随时间递增/逐渐改变信号的音高? 我已经包含了原始信号的示例以及我正在尝试使处理信号听起来像(我使用Audacity创建处理后的信号并使用它们的效果Sliding time scale / pitch shift)但是想在Octave 4.0中创建此信号.如果您收听已处理信号,您可以听到文件的音高逐渐增加,但文件长度与原始信号文件的长度相同(秒).

我正在使用Octave 4.0,就像Matlab一样

这里的代码可以改变整个信号的音高,并在几秒钟内保持原始信号的相同长度,但我不知道如何逐渐改变信号的音高.谢谢rayryeng让我这么远.

clear, clc
[ya, fs, nbitsraw] = wavread('/tmp/original_signal.wav');

num_per_sec=2.4; %// Define total number of times we see the signal

%// Get total number of integer times we see the signal
num_whole = floor(num_per_sec);

%// Replicate signal
yb=repmat(ya,num_whole,1);

%// Determine how many samples the partial signal consists of
portion = floor((num_per_sec - num_whole)*length(ya)); …
Run Code Online (Sandbox Code Playgroud)

matlab signal-processing fft octave pitch-shifting

7
推荐指数
1
解决办法
593
查看次数

在字符串中查找最短的重复模式

我想知道是否有办法在Octave/matlab中进行模式匹配?我知道Maple 10有命令这样做但不确定我需要在Octave/Matlab中做什么.因此,如果一个数字是12341234123412341234模式匹配将是1234.我试图找到重复生成整个字符串最短模式.

请注意:数字(仅使用数字)不会这么简单.另外,我不会提前知道这个模式(这就是我想要找到的).请参阅下面的Maple 10示例,该示例显示模式未提前知道,但命令找到模式.

Maple 10模式匹配示例:

ns:=convert(12341234123412341234,string);

             ns := "12341234123412341234"

StringTools:-PrimitiveRoot(ns);

             "1234"
Run Code Online (Sandbox Code Playgroud)

我如何在Octave/Matlab中执行此操作?Ps:我正在使用Octave 3.8.1

regex matlab octave pattern-matching maple

6
推荐指数
1
解决办法
1522
查看次数

在Matlab/Octave中创建颜色贴图/热图

我正在使用Octave 3.8.1,就像Matlab一样,我正在尝试创建一个颜色贴图/热图,看起来像这样

地图

我有一个数组a1,其中第一个col是x,第二个col是y,第三个col是强度.我知道我可以使用plot(x,y)绘制一个2D图,但是如何在图中添加/显示强度(第三列).

a1=
[225.512    2.64537 0.00201692
225.512 2.64537 0.00201692
226.94  1.59575 0.00225557
226.94  1.59575 0.00225557
227.31  1.70513 0.002282
227.31  1.70513 0.002282
227.729 5.34308 0.00205535
227.729 5.34308 0.00205535
227.975 5.12741 0.001822
227.975 5.12741 0.001822]
Run Code Online (Sandbox Code Playgroud)

完整数据集位于https://www.dropbox.com/s/mmhpbelnjoondho/full.csv

请注意,这只是示例数据.

matlab octave color-mapping heatmap colormap

6
推荐指数
1
解决办法
2万
查看次数

寻找正向和零交叉的零交叉,这些都是负面的

我有一个信号,我想复制它:

1)从过零点开始正向

2)复制一组点数(如8000)

3)并且在复制8000点之后继续追加点,直到找到零交叉下降部分.

我可以找到零交叉,但是我知道如何判断零交叉是否为正和/或零交叉为负时我会遇到一些问题.我也很难在最后的8000分之后添加下一部分(所以问题#1和问题#3 以粗体显示我有问题)

注意:请记住我正在使用的信号是音频信号,所以它不如简单的方程式那么好.

我已将测试代码与图像一起附加.我正在使用matlab/octave

clear all, clc, tic, clf;
n=16000
t=linspace(0,2*pi,n);
y=cos(6*t)+sin(4*t);

%find zero crossings
t1=y(1:n-1);
t2=y(2:n);
tt=t1.*t2;
indx=find(tt<0)

%1) start at first zero crossing going positive 
%2) get 8000 pts 
%3) and after the 8000 points continue appending points until a zero crossing going down section is found
new_y=y(indx(1,1):8000); %start at zero section found get 8000 pts
subplot(2,1,1);plot(y);title('Original Signal')
subplot(2,1,2);plot(new_y);title('New signal')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

matlab signal-processing octave

5
推荐指数
1
解决办法
3万
查看次数

matlab/octave中的动画图/轨迹

我正在尝试使用matlab/octave为这个螺旋设置动画我希望它能够向上或向下旋转

t = 0:0.1:10*pi;
r = linspace (0, 1, numel (t));
z = linspace (0, 1, numel (t));
plot3 (r.*sin(t), r.*cos(t), z);
Run Code Online (Sandbox Code Playgroud)

螺旋

我尝试使用for循环来设置它的动画,但这只是给我一个圆锥形状,请参阅下面的代码和图片

clear all, clc,clf,tic
t = 0:0.1:10*pi;
r = linspace (0, 1, numel (t));
z = linspace (0, 1, numel (t));

for ii=1:length(r)
    ii
    plot3 (r.*sin(t(ii)), r.*cos(t(ii)), z);
    hold on
    %pause (.00001)
end
Run Code Online (Sandbox Code Playgroud)

图片 在此输入图像描述

math 3d matlab animation octave

5
推荐指数
1
解决办法
1万
查看次数

phantomjs 和简单的示例给出了 TypeError: Attempting to Change the setter of an unconfigurable property

我正在研究 phantomjs 示例,但出现TypeError: Attempting to Change the setter of an unconfigurable property。 错误不断出现。我想将返回的值通过管道传输到文件,但即使有下面的简单示例,它们也充满了这些错误消息。

var webPage = require('webpage');
var page = webPage.create();

page.settings.userAgent = 'Mozilla/5.0 (Linux; Android 9; SM-G960F Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Mobile Safari/537.36';


page.open('http://m.bing.com', function(status) {

  var title = page.evaluate(function() {
    return document.title;
  });

  console.log(title);
  phantom.exit();

});
Run Code Online (Sandbox Code Playgroud)

生产:

Bing
TypeError: Attempting to change the setter of an unconfigurable property.
TypeError: Attempting to change the setter of an unconfigurable property.
Run Code Online (Sandbox Code Playgroud)

它应该只发回Bing任何解决方法吗?

我在 Ubuntu …

javascript phantomjs phantomjs-node

5
推荐指数
1
解决办法
3317
查看次数