下面这句是在百度百科上面看到的非常形象,比官方给出的好,谢谢百度百科bsxfun()函数的编辑作者“两个非“单一维度”相互匹配的数组a和b做函数fun运算时,bsxfun会隐含扩充a或b使得a和b结构相同,以便实现逐元素运算。使用函数bsxfun可以避免用循环结构编程。bsxfun调用格式:bsxfun(@已有定义的函数名, 数组1,数组2)bsxfun(@( 数组1,数组2)函数体表达式,数组1...
实例1:矩阵A的每列元素减去该列的平均值。
一般做法,先求A的平均值,得到的结果是1*3的矩阵(按列求平均值),然后将得到的结果进行扩充,即将一行复制成三行使得维度和A保持一致,最后做减法运算。
A = [1 2 10; 1 4 20; ...
bsxfun
(fun,A,B)
偶然间发现了这个
函数
,强大得不得了呀,它的作用是:对两个矩阵A和B之间的每一个元素进行指定的计算(
函数
fun指定);并且具有自动扩维的作用
例如,A是一个4*3的矩阵,B是一个4*1的列向量,如果想要矩阵A的每一列都对向量B进行一些操作,比如,A的每一列的相应元素都要除以向量B
中
的相应元素,那么,比较原始的方法就是利用repmat命令,将向量B进行平铺,对它的每...
图像集制作过程参考:https://blog.csdn.net/sinat_30071459/artic
le
/details/50723212
图像集相关修改参考链接下半部分:https://blog.csdn.net/sinat_30071459/artic
le
/details/50546891
按要求完成1-9
根据第10条运行script_faster_rcnn_VOC2007_ZF....
bsxfun
是一个matlab自版本R2007a来就提供的一个
函数
,作用是”applies an e
le
ment-by-e
le
ment binary operation to arrays a and b, with sing
le
ton expansion enab
le
d.”
举个例子。假设我们有一列向量和一行向量。
a = randn(3,1), b = randn(1,3)
N =
le
ngth(signal); % 信号长度
w = hamming(windowSize); % 窗
函数
step = windowSize - overlap * windowSize; % 帧移
numFrames = floor((N - windowSize) / step) + 1; % 分帧数
% 初始化输出数据
spec = zeros(windowSize, numFrames); % 频谱图矩阵
% 分帧处理
for i = 1:numFrames
startIdx = (i - 1) * step + 1; % 起始位置
endIdx = startIdx + windowSize - 1; % 结束位置
x = signal(startIdx:endIdx) .* w; % 加窗
a = lpc(x, order); % LPC分析
[H, f] = freqz(1, a, windowSize, Fs); % 频谱分析
spec(:, i) = abs(H); % 取模值
% 绘制频谱图
freq = linspace(0, Fs / 2, windowSize / 2 + 1); % 频率轴
time = linspace(0, N / Fs, numFrames); % 时间轴
imagesc(time, freq, 20 * log10(spec(1:windowSize / 2 + 1, :))); % 绘制频谱图
axis xy; colormap(jet); colorbar; % 设置坐标轴、色标
xlabel('Time [s]'); ylabel('Frequency [Hz]');
tit
le
('Linear Predictive Coding Spectrogram');
使用示例:
```matlab
load('examp
le
_signal.mat'); % 载入样例信号
Fs = 16000; % 采样频率
order = 16; % 预测阶数
windowSize = 512; % 窗口大小
overlap = 0.75; % 帧重叠比例
lpc_spectrogram(signal, Fs, order, windowSize, overlap); % 绘制频谱图