x1 = np.cos(6*np.pi*t) x2 = np.cos(14*np.pi*t) x3 = np.cos(26*np.pi*t)画出他们MATLAB图像
时间: 2024-12-16 18:22:16 浏览: 6
在MATLAB中,你可以使用`plot`函数来绘制三个余弦波形。这里是一个简单的示例代码,展示了如何生成并显示这些波形:
```matlab
% 定义时间范围
t = linspace(0, 1, 1000); % 从0到1,采样点数为1000
% 创建三个余弦函数数组
x1 = cos(6*pi*t);
x2 = cos(14*pi*t);
x3 = cos(26*pi*t);
% 绘制图像
figure; % 新建图形窗口
hold on; % 保持当前图形以便在同一窗口添加更多线
plot(t, x1, 'r', 'LineWidth', 1.5, 'DisplayName', 'f1'); % 红色线,频率6π
plot(t, x2, 'g', 'LineWidth', 1.5, 'DisplayName', 'f2'); % 绿色线,频率14π
plot(t, x3, 'b', 'LineWidth', 1.5, 'DisplayName', 'f3'); % 蓝色线,频率26π
% 添加标题、标签和图例
title('Multiple Cosine Waves');
xlabel('Time (s)');
ylabel('Amplitude');
legend('show');
% 显示图像
grid on; % 添加网格线
```
运行上述代码后,你会看到一个包含三条余弦曲线的图像,分别代表频率为6π、14π和26π的波形。
相关问题
import numpy as np N = 32 n = np.arange(N) wn = np.random.uniform(0, 1, N) X1 = np.cos(2 * np.pi * n / N) * wn X2 = np.sin(2 * np.pi * n / N) X1_fft = np.fft.fft(X1) X2_fft = np.fft.fft(X2) X3_fft = X1_fft * X2_fft X3_fft[:N] = X3_fft[:N] / N X3_fft[N:] = 0 X3 = np.fft.ifft(X3_fft) X3 = np.real(X3) print(X3)
这段代码使用了numpy库中的FFT函数来计算两个信号的乘积的傅里叶变换。首先,np.arange(N)生成了一个从0到31的序列,作为离散时间轴上的采样点。接着,np.random.uniform(0, 1, N)生成了一个从0到1的随机数序列,作为加权系数。然后,X1和X2分别计算了一个正余弦信号,其中正弦信号使用了wn作为加权系数。接下来,使用np.fft.fft函数对X1和X2进行傅里叶变换,得到它们的频率域表示X1_fft和X2_fft。将它们相乘,得到X3_fft,即两个信号的乘积的傅里叶变换。由于FFT计算的是周期性信号的频谱,因此需要将X3_fft的前一半和后一半重新排列,以得到正确的结果。最后,使用np.fft.ifft函数对X3_fft进行逆傅里叶变换,得到X3,即两个信号的乘积的时域表示。因为傅里叶变换是线性变换,所以X3和X1、X2的乘积的时域表示是一样的。最后,使用np.real函数取实部,得到X3的实数部分。
得到函数y_rec的函数表达式:import numpy as np import matplotlib.pyplot as plt def gen_data(x1, x2): y_sample = np.sin(np.pi * x1 / 2) + np.cos(np.pi * x1 / 3) y_all = np.sin(np.pi * x2 / 2) + np.cos(np.pi * x2 / 3) return y_sample, y_all def kernel_interpolation(y_sample, x1, sig): gaussian_kernel = lambda x, c, h: np.exp(-(x - x[c]) ** 2 / (2 * (h ** 2))) num = len(y_sample) w = np.zeros(num) int_matrix = np.asmatrix(np.zeros((num, num))) for i in range(num): int_matrix[i, :] = gaussian_kernel(x1, i, sig) w = int_matrix.I * np.asmatrix(y_sample).T return w def kernel_interpolation_rec(w, x1, x2, sig): gkernel = lambda x, xc, h: np.exp(-(x - xc) ** 2 / (2 * (h ** 2))) num = len(x2) y_rec = np.zeros(num) for i in range(num): for k in range(len(w)): y_rec[i] = y_rec[i] + w[k] * gkernel(x2[i], x1[k], sig) return y_rec
函数y_rec的函数表达式为:
```
y_rec = np.zeros(num)
for i in range(num):
for k in range(len(w)):
y_rec[i] = y_rec[i] + w[k] * np.exp(-(x2[i] - x1[k]) ** 2 / (2 * (sig ** 2)))
```
阅读全文