virtual studio生成 Qt的可执行文件中exe.recip如何变为exe
时间: 2024-01-16 15:04:47 浏览: 24
在使用 Visual Studio 生成 Qt 可执行文件时,通常会生成一个名为 exe.recip 的文件。这个文件实际上是一个脚本文件,用于描述生成可执行文件的详细过程。
要将 exe.recip 文件转换为可执行文件,可以按照以下步骤操作:
1. 打开 Visual Studio,打开 Qt 项目的解决方案文件。
2. 在“解决方案资源管理器”中,右键单击 Qt 项目,选择“属性”。
3. 在“属性页”中,选择“生成事件”选项卡。
4. 在“预先生成事件命令行”文本框中,输入以下命令:nmake -f exe.recip
5. 单击“应用”和“确定”按钮。
6. 重新生成 Qt 项目,exe.recip 就会自动转换为可执行文件。
注意:在执行上述步骤之前,请确保已经正确配置好 Visual Studio 和 Qt 环境,并且已经安装了 Qt Visual Studio 插件。
相关问题
nx.reciprocity(DG)
函数 `nx.reciprocity(DG)` 是 NetworkX 库中用于计算有向图 DG 中每个节点的往返度数的函数,即某个节点的入度和出度之和。
具体而言,对于有向图 DG 中的每个节点,该函数会计算它的往返度数,即该节点的入度和出度之和。如果该节点没有出度或者入度,则往返度数为0。函数返回一个字典,其中每个键值对表示一个节点的往返度数。
示例如下:
```python
import networkx as nx
DG = nx.DiGraph()
DG.add_edges_from([(1, 2), (2, 3), (3, 1), (3, 4)])
recip = nx.reciprocity(DG)
print(recip) # 输出 {1: 1.0, 2: 1.0, 3: 0.6666666666666666, 4: 0.0}
```
在上述示例中,我们创建了一个有向图 DG,其中包含四个节点和四条有向边。调用 `nx.reciprocity(DG)` 函数后,返回的字典中包含每个节点的往返度数。例如,节点1和节点2的往返度数都为1,节点3的往返度数为0.67,节点4的往返度数为0。
% 定义一些常量fft_size = 2048;hop_size = fft_size/4;min_freq = 80;max_freq = 1000;% 读取音频文件filename = 'example.aac';[x, Fs] = audioread(filename);% 计算音高[f0, ~] = yin(x, Fs, fft_size, hop_size, min_freq, max_freq);f0 = medfilt1(f0, 5); % 中值滤波midi = freq2midi(f0);% 计算主音调[~, max_idx] = max(histcounts(midi, 1:128));dominant_note = max_idx - 1;% 输出结果fprintf('主音调:%.2f Hz\n', midi2freq(dominant_note));function [f0, rms_energy] = yin(x, fs, fft_size, hop_size, min_freq, max_freq)% YIN算法计算音频信号的基频% 初始化变量n_frames = floor((length(x)-fft_size)/hop_size) + 1;f0 = zeros(n_frames, 1);rms_energy = zeros(n_frames, 1);% 计算自相关函数x = x(:);x = [x; zeros(fft_size, 1)];acf = xcorr(x, fft_size, 'coeff');acf = acf(ceil(length(acf)/2):end);% 计算差值函数d = zeros(fft_size, n_frames);for i = 1:n_frames frame = x((i-1)*hop_size+1:(i-1)*hop_size+fft_size); for tau = 1:fft_size d(tau, i) = sum((frame(1:end-tau) - frame(1+tau:end)).^2); endend% 计算自相关函数的倒数acf_recip = acf(end:-1:1);acf_recip(1) = acf_recip(2);acf_recip = acf_recip.^(-1);% 计算累积平均能量running_sum = 0;for i = 1:n_frames running_sum = running_sum + sum(x((i-1)*hop_size+1:(i-1)*hop_size+fft_size).^2); rms_energy(i) = sqrt(running_sum/fft_size);end% 计算基频for i = 1:n_frames r = acf_recip./(acf(i:end).*acf_recip(1:end-i+1)); r(1:i) = 0; r(max_freq/fs*fft_size+1:end) = 0; [~, j] = min(r(min_freq/fs*fft_size+1:max_freq/fs*fft_size)); f0(i) = fs/j;endendfunction midi = freq2midi(freq)% 将频率转换为MIDI码midi = 12*log2(freq/440) + 69;endfunction freq = midi2freq(midi)% 将MIDI码转换为频率freq = 440*2^((midi-69)/12);end对于此运算,数组的大小不兼容。 出错 yin (第 26 行) r = acf_recip./(acf(i:end).*acf_recip(1:end-i+1)); 出错 untitled2 (第 8 行) [f0, ~] = yin(x, Fs, fft_size, hop_size, min_freq, max_freq);请修改以上错误
这个问题是一个MATLAB代码错误,请先检查你的输入音频文件是否存在,并且检查你在函数调用yin()时传递的参数是否正确。如果参数正确,那么请检查yin()函数的代码第26行,尝试修改为:
```
r = acf_recip./(acf(i:end).*acf_recip(1:end-i)');
```
这里增加了一个转置操作,以使得acf_recip(1:end-i+1)和acf(i:end)的大小相同。