用MATLAB处理一个信号,求其相位

用MATLAB处理一个信号,求其相位,第1张

1、电脑上点击打开Matlab软件。

2、点击“新建脚本”新建一个脚本文件(m文件),在脚本文件中编写程序方便修改。

3、利用Matlab中的int函数对速度信号v(t)=2t积分,在脚本文件中输入程序如下图所示。

4、点击左上方的“保存”菜单。

5、在编辑器页面的上方工具栏中点击“运行”菜单。

6、接着在Matlab的命令窗口中就可以看到对速度信号的积分结果。

你的下面这句话,第二个单引号用成中文字符的单引号,改成英文字符的单引号

title('时域信号波形’)

改成

title('时域信号波形')

就可以了。

结果为:

平面回波成像序列: Echo Planar Imaging

EPI序列是在一次射频脉冲激励后,利用正反相位连续切换采集信号。严格意义上来讲,EPI不属于序列分类,算是一种信号采集技术,是一种信号读出模式。

磁共振弥散加权成像(Diffusion Weighted Imaging, DWI),是唯一能够活体检测水分子扩散情况的无创影像检查技术,而且也是临床应用最多的一个磁共振功能监测技术。

单激发是一次射频脉冲激励以后,通过读出信号的方式采集完一副图像所需要的所有K空间相位编码线。最大的有点是快,可以冻结宏观的运动伪影。目前临床EPI序列应用最多的是做DWI弥散,采用的大部分是单激发。所以腹部弥散,可以完全自由呼吸做而运动伪影却不大,因为单激发对运动伪影不敏感。

EPI factor :确定每次激励时收集的Ky线的数量

EPI因子越大,SNR越低,同时还会影响磁化率伪影和图像变形,扫描仪产生的噪音

而EPI序列,如果回波链多了 EPI factor 也会导致EPI伪影和变形加大;另外,EPI序列没有采用多个180°重聚脉冲聚集信号,对磁化率敏感,容易产生磁化率伪影。

由于磁场的不均匀性,以及EPI通过正反梯度切换快速的读出信号,产生的涡流和化学位移等因素,使得K空间的奇、偶回波之间容易积累相位差,在相位编码方向上产生Ghost伪影。导致图像的变形(distortion)。

奇偶回波产生的K空间偏移方向不同,从而出现相位编码方向得相位震荡,产生Ghost伪影

在 Single-shot 的情况下,图像产生1/2 Nyquist ghosts

在 Multi-shot 的情况下,图像可能会产生1/4 Nyquist ghosts,1/8 Nyquist ghosts,由采集方式决定

three types of Nyquist ghosts in single-shot EPI:

1) constant-phase ghost :与空间位置无关的相位误差引起的伪影,比如零阶的涡流梯度场和偏离中心视野成像的频率失配

2) linear-phase ghost :频率编码方向上的线性相位误差引起的伪影,比如频率编码方向上的线性涡流场,梯度群时延和梯度放大器的延迟

3) oblique-phase ghost :相位编码方向上的线性相位误差引起的伪影,通常发生在EPI斜采时,产生的原因可能有各方向梯度不一致的涡流特性、群时延以及交叉涡流项

k-space data are shifted (spatially constant)

k-space data are shifted (频率编码方向)

我们可以把K空间,沿着 频率编码 方向,奇数行向前平移一个点,偶数行向后平移一个点,来达到这种伪影效果。

k-space data are shifted (相位编码方向)

我们可以把K空间,沿着 相位编码 方向,奇数行向前平移一个点,偶数行向后平移一个点,来达到这种伪影效果。

Because this ghost is typically observed in oblique EPI scans , it has been called the oblique Nyquist ghost

Common sources for the oblique Nyquist ghosts include inconsistent eddy current characteristics and group delays among the physical gradient axes (also known as gradient anisotropy; Aldefeld and Bornert 1998) and cross-term eddy currents

The combination of a constant-phase ghost and a linear-phase ghost will shift the vertical nodal line away from the image center

The combination of a linear-phase ghost and an oblique Nyquist ghost can produce a tilted nodal line

定义Read、Phase方向点数

生成头部模拟图,尺寸为128128

重新构建图像尺寸,填零至256256

生成K空间

从K空间恢复到原图

反相位先采集。人体磁共振信号主要来水和脂肪。当水中的氢质子的相位与脂肪中氢质子相位差为180度时,其宏观横向磁化矢量相互抵消(Mxy=0),MR检测到的信号为水和脂肪信号相减得差值,把这种图像称之为反相位(outofphase)图像。人体磁共振信号最先接触的是水和脂肪信号所以反相位先采集。在经过一-段时间后,水中氢质子的相位与脂肪中氢质子的相位相差360度时,两者的相位再次重合(即Mxy相叠加),此时MR检测到的信号为水和脂肪信号相加的和,把这种图像称之为同相位(inphase)图像。

下面的代码是用来按照频率取样法设计FIR高通数字滤波器的,你可以参考一下

close all

clear all

clc

N1=23;

wc=pi/3;

Hk=[zeros(1,5) ones(1,N1) zeros(1,5)];

Y=02501;

Hk(5)=Y;

Hk(5+N1+1)=Y;

N=length(Hk);

wk=0:2pi/N:2pi-2pi/N;

thetak=-pi(N-1)(0:N-1)/N; %相位采样向量θ(k)=-(N-1)pik/N, 0≤k≤N-1

Hdk=Hkexp(jthetak); %构造频率采样向量Hd(k)

hn=real(ifft(Hdk)); %hn=IDFT[H(k)],real只取实部,忽略计算误差引起的虚部

figure

plot(wk/piN/2,Hk);

hold on

scatter(wk/piN/2,Hk,'');

grid

[H,w]=freqz(hn,1);

figure

AH=abs(H);

maxAH=max(AH);

subplot(211)

plot(w/pi,20log10(abs(H)/maxAH));

axis([0 1 -80 5])

grid

subplot(212)

plot(w/pi,abs(H)/maxAH);

axis([0 1 -01 11])

grid

Sub MergeSort(Array() As Integer, First As Integer, Last As Integer)

Dim mid As Integer = 0

If first<last Then

mid = (first+last)\ 2

MergeSort(Array, first, mid);

MergeSort(Array, mid+1, last);

Merge(Array, first, mid, last);

End If

End Sub

/

以下示例代码实现了归并 *** 作。array[]是元素序列,其中从索引p开始到q位置,按照升序排列,同时,从(q+1)到r也已经按照升序排列,merge()函数将把这两个已经排序好的子序列合并成一个排序序列。结果放到array中。

/

/

0 <= p <= q < r, subarray array[pq] and array[q+1r] are already sorted

the merge() function merges the two sub-arrays into one sorted array

/

void Merge(int array[], int p, int q, int r)

{

int i,k;

int begin1,end1,begin2,end2;

int temp = (int)malloc((r-p+1)sizeof(int));

begin1 = p;

end1 = q;

begin2 = q+1;

end2 = r;

k = 0;

while((begin1 <= end1)&&( begin2 <= end2))

{

if(array[begin1] <= array[begin2]){

temp[k] = array[begin1];

begin1++;

}

else

{

temp[k] = array[begin2];

begin2++;

}

k++;

}

while(begin1<=end1 || begin2<=end2)

{

if(begin1<=end1)

{

temp[k++] = array[begin1++];

}

if(begin2<=end2)

{

temp[k++] = array[begin2++];

}

}

for (i = 0; i < =(r - p); i++)

array[p+i] = temp[i];

free(temp);

}

以上就是关于用MATLAB处理一个信号,求其相位全部的内容,包括:用MATLAB处理一个信号,求其相位、有大神知道MATLAB中相位编组(直线检测算法)的程序的么在线等。、4.4.3 EPI伪影:模拟Nyquist ghost(matlab)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9772611.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存