标签: matlab

如何使用矢量化代码在MATLAB中从两个向量生成所有对?

不止一次,我需要在MATLAB中生成所有可能的两个向量对,我用它来做几个代码行的循环,即

vec1 = 1:4;
vec2 = 1:3;
i = 0;
pairs = zeros([4*3 2]);
for val1 = vec1
    for val2 = vec2
         i = i + 1;
         pairs(i,1) = val1;
         pairs(i,2) = val2;
    end
end
Run Code Online (Sandbox Code Playgroud)

生成......

1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
4 1 
4 2
4 3
Run Code Online (Sandbox Code Playgroud)

必须有一个更好的方法来做这个更多的MATLAB'esque?

NB nchoosek没有做反向双这是我需要的东西(即2 11 2),我不能只是扭转和追加nchoosek输出,因为对称对将被包含两次.

matlab combinations

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

了解Matlab FFT示例

我是matlab和FFT的新手,想要了解Matlab FFT示例.现在我有两个主要问题:

1)为什么x轴(频率)结束于500?我怎么知道没有更多的频率或者它们被忽略了?

2)我怎么知道频率在0到500之间?FFT不应该告诉我,频率在哪些限制范围内?FFT是否仅在没有频率的情况下返回幅度值?

谢谢你的提示!


有问题的例子:

考虑以1000 Hz采样的数据.形成一个信号,其中包含幅度为0.7和120 Hz的幅度为1的正弦波的50 Hz正弦曲线,并使用一些零均值随机噪声对其进行破坏:

Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = 1000;                     % Length of signal
t = (0:L-1)*T;                % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); 
y = x + 2*randn(size(t));     % Sinusoids plus noise
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')
Run Code Online (Sandbox Code Playgroud)

时域

转换到频域,通过快速傅立叶变换(FFT)找到有噪信号y的离散傅立叶变换:

NFFT = 2^nextpow2(L); % Next power of …
Run Code Online (Sandbox Code Playgroud)

matlab fft

46
推荐指数
2
解决办法
14万
查看次数

如何在MATLAB中针对一列对二维数组进行排序?

我想根据特定列对矩阵进行排序.有一个sort函数,但它独立地排序所有列.

例如,如果我的矩阵data是:

 1     3
 5     7
-1     4
Run Code Online (Sandbox Code Playgroud)

然后所需的输出(按第一列排序)将是:

-1     4
 1     3
 5     7
Run Code Online (Sandbox Code Playgroud)

但输出sort(data)是:

-1     3
 1     4
 5     7
Run Code Online (Sandbox Code Playgroud)

如何按第一列对此矩阵进行排序?

sorting matlab matrix octave

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

如何检测我是否正在运行MATLAB或Octave?

我需要编写应该在Octave和MATLAB上运行良好的代码.问题是它需要做一些GUI的东西,MATLAB和Octave处理完全不同.

有没有办法可以检测我是否正在运行MATLAB或Octave,以便调用正确的函数?

matlab portability octave

45
推荐指数
4
解决办法
8616
查看次数

编写MATLAB代码的好习惯?

我想知道编写结构良好的代码的基本原则和礼仪.

python matlab structure

45
推荐指数
7
解决办法
3430
查看次数

如何在MATLAB中标准化直方图?

如何对直方图进行归一化,使概率密度函数下的面积等于1?

matlab normalization histogram

45
推荐指数
4
解决办法
20万
查看次数

如何减少matlab中子图的边界?

可能重复:
MATLAB子图边距

在matlab中,在子图周围浪费了过多的空间.例如,在此示例中:

t = 0:0.001:2*pi+0.001;
figure(2);
for i = 1 : 25;
    subplot(5,5,i);
    plot(t, sin(i*t));
    axis off
end
Run Code Online (Sandbox Code Playgroud)

子图中浪费的白色空间的示例

图中超过50%的空间被浪费为"空白"我想缩小空白区域,但是找不到这样做的机制是不成功的.思考?

谢谢约翰

matlab subplot

45
推荐指数
3
解决办法
6万
查看次数

如何在MATLAB中初始化结构数组?

如何在MATLAB中预分配结构数组?我想在此示例中预先分配"a",以便它不会多次调整大小.

a = []
for i = 1:100
  a(i).x = i;
end
Run Code Online (Sandbox Code Playgroud)

matlab

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

性能权衡 - MATLAB何时比C/C++更好/更慢

我知道C/C++是一种低级语言,当我们与任何其他高级语言进行比较时,它会生成相对优化的机器代码.但我想这远不止于此,从实践中也可以看出这一点.

当我进行像高斯样本集合的montecarlo平均的简单计算时,我发现C++实现或MATLAB实现之间没有太大区别,有时实际上MATLAB在时间上表现得更好.

当我继续使用数千行代码进行更大规模的模拟时,慢慢地显示真实的图像.与同等的MATLAB实现相比,C++仿真显示出优越的性能,比时间复杂度高100倍.

大多数时候,C++中的代码几乎都是串行的,没有明确的高保真优化.然而,根据我的意识,MATLAB本身就做了很多优化.这显示了例如当我尝试生成大量随机样本时,其中使用像IT ++/GSL/Boost这样的库在C++中的等效执行相对较慢(使用的算法是相同的,即mt19937).

我的问题只是想知道MATLAB/C++在性能上是否有更简单的权衡.它就像人们所说的那样,"只要你能,C/C++就更好"(经验丰富的人)?从另一个角度来看,"除了舒适之外,什么是MATLAB的好处?"

顺便说一句,我没有看到编码效率参数在这里很重要,在这两种情况下都考虑了相同的程序员.而且,我认为像python,R这样的其他选择在这里并不重要.但依赖我们使用的特定库应该很有趣.

[我是通信系统中编码理论的博士生.我一直使用matlab/C++进行模拟,并且在两种情况下都有编码少量10K线的合理经验]

c c++ performance matlab

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

Python相当于Matlab中的"hold on"

在Matlab的Python的matplotlib中是否有明确的等效命令hold on?我试图在同一轴上绘制所有图形.一些图表是一个内部产生for循环,而这些是从单独绘制susl:

import numpy as np
import matplotlib.pyplot as plt

for i in np.arange(1,5):
    z = 68 + 4 * np.random.randn(50)
    zm = np.cumsum(z) / range(1,len(z)+1)
    plt.plot(zm)
    plt.axis([0,50,60,80])

plt.show()

n = np.arange(1,51)
su = 68 + 4 / np.sqrt(n)
sl = 68 - 4 / np.sqrt(n)

plt.plot(n,su,n,sl)

plt.axis([0,50,60,80])
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matlab graph matplotlib

45
推荐指数
3
解决办法
14万
查看次数