为什么情节的标题不断重复?

时间:2014-03-21 23:23:34

标签: matlab plot fft

为什么MATLAB会不断重复这个标题?这是一个屏幕截图:

enter image description here

它应该在Freq之后停止,但它会重复整个事情。

这是我用于显示的代码:

I1_amp = max(I1_FFT);
I1_RMS = I1_amp/sqrt(2);
I1_freq = find(I1_FFT==I1_amp)-1; % -1 because in matlab the index starts from 1

subplot 511
plot(axis,I1_FFT);
title(sprintf(' 1st harmonic => Ipeak = %.2f , Irms = %.2f , Freq = %i',I1_amp,I1_RMS,I1_freq));

1 个答案:

答案 0 :(得分:4)

sprintf和朋友是矢量化的,所以如果数据中有剩余的元素,它将继续重复格式字符串,直到它尽可能多地消耗。那是"为什么"。

据推测,在这种情况下,最大值不是唯一的,因此find返回了多个索引。如果您不需要专门处理此问题而只想要第一次或最后一次出现,您可以将适当的选项传递给find

I1_freq = find(I1_FFT==I1_amp, 'last')-1;

如果第一个索引足够,在大多数情况下,您可以完全跳过find,因为max已经存在:

[I1_amp I1_freq] = max(I1_FFT);  % assuming I1_FFT is a vector

请注意,find会返回线性索引,而max会在给定维度上运行,因此对于矩阵,您需要使用(:)将它们线性化,以获得等效的{{} 1}},而不是每列/行索引的向量。