Matlab 如何增加绘制的样本数?
首先,我不完全确定我所做的是否正确,哈哈。 这也可能是我对概念理解的问题 以下是我们实验室活动中的说明: 1.创建振幅为(SeatNo*0.1)的正弦信号(sin 2pi50*t),采样频率为: a。8000 Hz并绘制图表,以显示多达200个样本 c。4050 Hz并绘制图表,以显示多达200个样本 这是我的尝试:Matlab 如何增加绘制的样本数?,matlab,signal-processing,Matlab,Signal Processing,首先,我不完全确定我所做的是否正确,哈哈。 这也可能是我对概念理解的问题 以下是我们实验室活动中的说明: 1.创建振幅为(SeatNo*0.1)的正弦信号(sin 2pi50*t),采样频率为: a。8000 Hz并绘制图表,以显示多达200个样本 c。4050 Hz并绘制图表,以显示多达200个样本 这是我的尝试: amp = 12*0.1; %amplitude %%%%%%%%%%%%%%%%%%%% % Number 1 % %%%%%%%%%%%%%%%%%%%% %s
amp = 12*0.1; %amplitude
%%%%%%%%%%%%%%%%%%%%
% Number 1 %
%%%%%%%%%%%%%%%%%%%%
%sinusoidal wave
figure(1);
n = 200; %samples
%plot a
subplot(2,2,1);
fs = 8000; %sampling frequency
a = num1(fs, amp, n);
plot(a);
title('Plot 1a');
%plot c
subplot(2,2,3);
fs = 4050; %sampling frequency
c = num1(fs, amp, n);
plot(c);
title('Plot 1c');
%%%%%%%%%%%%%%%%%%%%
% Number 1 %
%%%%%%%%%%%%%%%%%%%%
function y = num1(fs, amp, n)
%solves for the sinusoidal signal using the given
t = (1/fs)*n;
t = linspace(0, numSec, n);
y = amp*sin(2*pi*50*t);
end
现在我不明白该怎么做:
2.比较1a和1c中的信号长度。如果需要,在较短信号的末尾执行零填充,以便它们具有相同的长度和长度
a。添加两个信号并绘制250个样本
我已经有了sigadd函数,并且已经添加了信号,但是它有200个样本。如何绘制250个样本?关于比较1a和1c中信号长度的部分对我来说没有意义。它们可以是你想要的任何长度。在我的示例代码中,我将每个信号设置为1000个点长,以便始终有大量点可供绘制。如果你想得到向量的长度,你可以使用length函数 为了添加这两个信号,它们应该具有相同的采样率,因此在我的采样代码中,我使用interp1将较高采样率的信号降采样为与较低信号相同的采样率 为了控制打印多少点,我创建了一个名为k的变量,用于控制打印哪些点 下面是执行要求的操作的代码:
amp = 12*0.1; %amplitude
%create a
fs_a = 8000; %sampling frequency
t_a = (0:999) / fs_a;
a = amp*sin(2*pi*50*t_a);
%create c
fs_c = 4050; %sampling frequency
t_c = (0:999) / fs_c;
c = amp*sin(2*pi*50*t_c);
% plot a and c
k = 1:200;
figure(1)
plot(t_a(k), a(k), '+-', t_c(k), c(k), 'o-');
xlabel('Time (s)')
grid on
legend('1a', '1c')
% Add a and c
% resample a a the sample rate for c (4050 Hz)
a_resampled = interp1(t_a, a, t_c);
length_a_plus_c = min([length(c), length(a_resampled)]);
a_plus_c = a_resampled(1:length_a_plus_c) + c(1:length_a_plus_c);
% plot a + c
figure(2)
k = 1:250;
plot(t_c(k), a_plus_c(k), 'o-')
grid on
xlabel('Time (s)')
title('a + c')
关于比较1a和1c中信号长度的部分对我来说没有意义。它们可以是你想要的任何长度。在我的示例代码中,我将每个信号设置为1000个点长,以便始终有大量点可供绘制。如果你想得到向量的长度,你可以使用length函数 为了添加这两个信号,它们应该具有相同的采样率,因此在我的采样代码中,我使用interp1将较高采样率的信号降采样为与较低信号相同的采样率 为了控制打印多少点,我创建了一个名为k的变量,用于控制打印哪些点 下面是执行要求的操作的代码:
amp = 12*0.1; %amplitude
%create a
fs_a = 8000; %sampling frequency
t_a = (0:999) / fs_a;
a = amp*sin(2*pi*50*t_a);
%create c
fs_c = 4050; %sampling frequency
t_c = (0:999) / fs_c;
c = amp*sin(2*pi*50*t_c);
% plot a and c
k = 1:200;
figure(1)
plot(t_a(k), a(k), '+-', t_c(k), c(k), 'o-');
xlabel('Time (s)')
grid on
legend('1a', '1c')
% Add a and c
% resample a a the sample rate for c (4050 Hz)
a_resampled = interp1(t_a, a, t_c);
length_a_plus_c = min([length(c), length(a_resampled)]);
a_plus_c = a_resampled(1:length_a_plus_c) + c(1:length_a_plus_c);
% plot a + c
figure(2)
k = 1:250;
plot(t_c(k), a_plus_c(k), 'o-')
grid on
xlabel('Time (s)')
title('a + c')
看起来创建此赋值是为了区分与时间或样本索引有关的求和信号之间的差异。下面是我绘制的一些图表,它们使用类似的重采样技术来实现累积信号所需的250个采样长度 关于样本指数的总和:
关于时间的总和:
与开始样本的时间但数量变化有关的总和:
使用MATLAB R2019b的Rna似乎创建此赋值是为了区分与时间或样本索引相关的求和信号之间的差异。下面是我绘制的一些图表,它们使用类似的重采样技术来实现累积信号所需的250个采样长度 关于样本指数的总和:
关于时间的总和:
与开始样本的时间但数量变化有关的总和:
Rna使用MATLAB R2019b两个信号的时间长度必须相同,而不是点数。加法应基于时间。两个信号的时间长度应相同,而不是点数。添加应该是基于时间的。我想问第2行和第3行做了什么
%添加与样本有关的信号%Cumulative\u Signal=Signal\u 1+Signal\u 2;样本_向量=(0:199);插值样本向量=linspace(0199250);累积信号=interp1(样本向量、累积信号、插值样本向量)代码>此行在0到199个样本之间插入其他样本。这有效地将您的累积_信号
从200点/采样信号转换为250点/采样信号。MATLAB通过使用interp1()
进行近似/计算来实现这一点。例如,如果你必须插值一个具有样本x=[01 01 0]
的三角形信号,我们可以将其插值为具有更多样本的信号,这些样本等于x=[0.5 1 0.5 0.5 1 0.5 0]
。我想问第2行和第3行做了什么%添加与样本有关的信号%Cumulative\u Signal=Signal\u 1+Signal\u 2;样本_向量=(0:199);插值样本向量=linspace(0199250);累积信号=interp1(样本向量、累积信号、插值样本向量)代码>此行在0到199个样本之间插入其他样本。这有效地将您的累积_信号
从200点/采样信号转换为250点/采样信号。MATLAB通过使用interp1()
进行近似/计算来实现这一点。例如,如果你必须插值一个具有样本x=[01 01 0]
的三角形信号,我们可以将其插值为具有更多样本的信号,这些样本等于x=[0.5 1 0.5 0.5 1 0.5 0]
。感谢您为我展示了解决此问题的另一种方法!(您使用高于要求的样本解决的部分,然后只绘制要求的样本)感谢您为我展示了解决问题的另一种方法!(使用高于要求的样本进行求解的部分,然后仅绘制要求的样本)
clf;
%Configuring Signal 1%
Sampling_Frequency = 8000;
Number_Of_Samples = 200;
Amplitude = 12*0.1;
Sampling_Period = 1/Sampling_Frequency;
t = (0:Sampling_Period:Sampling_Period*(Number_Of_Samples-1));
Signal_1 = Amplitude.*sin(2*pi*50*t);
subplot(3,1,1); plot(t,Signal_1,'Marker','.');
title("Signal 1: 50Hz Sinusoid Samples at " + num2str(Sampling_Frequency) + "Hz");
xlabel("Time (s)"); ylabel("Amplitude");
xlim([0 0.05]);
%Configuring Signal 2%
Sampling_Frequency = 4050;
Number_Of_Samples = 200;
Amplitude = 12*0.1;
Sampling_Period = 1/Sampling_Frequency;
t = (0:Sampling_Period:Sampling_Period*(Number_Of_Samples-1));
Signal_2 = Amplitude.*sin(2*pi*50*t);
subplot(3,1,2); plot(t,Signal_2,'Marker','.');
title("Signal 2: 50Hz Sinusoid Samples at " + num2str(Sampling_Frequency) + "Hz");
xlabel("Time (s)"); ylabel("Amplitude");
xlim([0 0.05]);
%Adding signals with respect to time%
Signal_1 = [Signal_1 zeros(1,200)];
Signal_1 = Signal_1(1:2:end);
Samples_Vector = (0:199); Interpolated_Samples_Vector = linspace(0,199,250);
Signal_1 = interp1(Samples_Vector,Signal_1,Interpolated_Samples_Vector);
Signal_2 = interp1(Samples_Vector,Signal_2,Interpolated_Samples_Vector);
End_Time = Sampling_Period*(Number_Of_Samples-1);
t = linspace(0,End_Time,250);
Cumulative_Signal = Signal_1 + Signal_2;
subplot(3,1,3); plot(t,Cumulative_Signal,'Marker','.');
title("Summed with Respect to Time: Cumulative Signal (Signal 1 + Signal 2)");
xlabel("Time (s)"); ylabel("Amplitude");
xlim([0 0.05]);
clf;
%Configuring Signal 1%
Sampling_Frequency = 8000;
Number_Of_Samples = 200;
Amplitude = 12*0.1;
Sampling_Period = 1/Sampling_Frequency;
t = (0:Sampling_Period:Sampling_Period*(Number_Of_Samples-1));
Signal_1 = Amplitude.*sin(2*pi*50*t);
subplot(3,1,1); plot(t,Signal_1,'Marker','.');
title("Signal 1: 50Hz Sinusoid Samples at " + num2str(Sampling_Frequency) + "Hz (" + num2str(Number_Of_Samples) + " samples)");
xlabel("Time (s)"); ylabel("Amplitude");
xlim([0 0.05]);
%Configuring Signal 2%
Sampling_Frequency = 4050;
Number_Of_Samples = 100;
Amplitude = 12*0.1;
Sampling_Period = 1/Sampling_Frequency;
t = (0:Sampling_Period:Sampling_Period*(Number_Of_Samples-1));
Signal_2 = Amplitude.*sin(2*pi*50*t);
subplot(3,1,2); plot(t,Signal_2,'Marker','.');
title("Signal 2: 50Hz Sinusoid Samples at " + num2str(Sampling_Frequency) + "Hz (" + num2str(Number_Of_Samples) + " samples)");
xlabel("Time (s)"); ylabel("Amplitude");
xlim([0 0.05]);
Signal_1 = Signal_1(1:2:end);
Cummulative_Signal = Signal_1 + Signal_2;
Samples_Vector = (0:99); Interpolated_Samples_Vector = linspace(0,99,250);
Cummulative_Signal = interp1(Samples_Vector,Cummulative_Signal,Interpolated_Samples_Vector);
End_Time = Sampling_Period*(Number_Of_Samples-1);
t = linspace(0,End_Time,250);
subplot(3,1,3); plot(t,Cummulative_Signal,'Marker','.');
title("Summed with Respect to Time");
xlabel("Time (s)"); ylabel("Amplitude");
xlim([0 0.05]);