Questions tagged «matlab»

MATLAB(MATrix LABoratory)是一种数值计算环境和第四代编程语言。请谨慎使用此标签。

2
参数化语音以删除情感内容
我很高兴接受R或Matlab中的建议,但是我在下面介绍的代码仅是R。 下面附带的音频文件是两个人之间的简短对话。我的目标是使他们的讲话失真,使情感内容变得无法识别。困难在于,我需要一些参数空间来使这种变形从1到5,其中1是“高度可识别的情绪”,而5是“不可识别的情绪”。我认为我可以使用三种方法来实现R。 从此处下载“快乐”音频波。 从此处下载“愤怒”音频波。 第一种方法是通过引入噪声来降低整体清晰度。下面介绍了此解决方案(感谢@ carl-witthoft的建议)。这将同时降低语音的清晰度和情感内容,但这是非常“肮脏的”方法-很难正确地获得参数空间,因为您可以控制的唯一方面是噪声(音量)。 require(seewave) require(tuneR) require(signal) h <- readWave("happy.wav") h <- cutw(h.norm,f=44100,from=0,to=2)#cut down to 2 sec n <- noisew(d=2,f=44100)#create 2-second white noise h.n <- h + n #combine audio wave with noise oscillo(h.n,f=44100)#visualize wave with noise(black) par(new=T) oscillo(h,f=44100,colwave=2)#visualize original wave(red) 第二种方法是以某种方式调整噪声,仅在特定频带中使语音失真。我以为我可以通过从原始音频波中提取幅度包络,从该包络中产生噪声,然后将噪声重新应用于音频波来做到这一点。下面的代码显示了如何执行此操作。它所做的与噪声本身不同,使声音破裂,但它又回到了同一点-我只能在此处更改噪声的幅度。 n.env <- setenv(n, h,f=44100)#set envelope of …
12 matlab  audio  noise 

1
如何在频域中找到卷积核?
我有两个空间数据向量(每个长度约2000个元素)。一个是另一种的卷积版本。我试图确定将产生这种卷积的内核。我知道我可以通过找到输出和输入矢量的傅立叶变换的比率的傅立叶逆变换来做到这一点。确实,当我这样做时,我或多或少得到了我期望的形状。但是,当实际上卷积仅使用大约五分之一(约300-400)的点时,我的核向量与两个输入向量具有相同的维数。我得到的形状正确但点数错误,这一事实使我认为我没有正确地使用ifft和fft函数。好像我真的在做正确的事情,这应该自然而然地发生。此刻我只是在做; FTInput = fft(in); FtOutput = fft(out); kernel = ifft(FtOutput./FTInput). 这是正确的吗?要由我来正确解释输出向量,还是我简化了任务?我敢肯定是后者,我只是不确定在哪里。

4
这是固定模式噪声校正的正确方法吗?
我目前正在参与一个涉及对成像传感器进行编程的项目。我们的传感器给我们带来噪音,因此我们要对其进行纠正。该项目中的其他人提出了拍摄“黑色”图像的想法,即戴上镜头盖并拍摄一个全黑的图像。(很明显,这不是由于噪声引起的)在这一点上,在随后的拍摄中,他从黑色图像中获取像素值,然后从常规拍摄的图像中减去像素值。 图像看起来确实更好,并且可以消除大部分噪点,但是由于以下原因,我不认为这是消除噪点的最佳方法: 固定图像的范围是[-172 194](366个值),而标准范围是[0 255]。重新绘制时,它的范围回到[0 255],看起来确实更好,但是我认为这是不正确的。 我应该提到新图像是在弱光下拍摄的。 这种方法对消除噪音是否正确?为什么或者为什么不?

12
高斯核模糊的一维信号的反卷积
我已经将一个随机信号与a高斯进行卷积,并添加了噪声(在这种情况下为Poisson噪声)以生成一个噪声信号。现在,我想对这个噪声信号进行反卷积,以使用相同的高斯信号提取原始信号。 问题是我需要执行一维反卷积的代码。(我已经在2D中找到了一些,但我的主要目标是1D)。 您能否建议我一些能够做到的软件包或程序?(最好在MATLAB中) 先谢谢您的帮助。

2
图像重建:相位与幅度
图1.(c)仅显示了从MAGNITUDE光谱重建的测试图像。可以说,低频像素的强度值比高频像素高。 图1.(d)仅显示从PHASE光谱重建的测试图像。可以说,高频(边缘,线条)像素的强度值比低频像素更大。 为什么在仅从MAGNITUDE光谱重建的测试图像和仅从PHASE光谱重建的测试图像之间存在这种强度变化(或交换)的神奇矛盾,它们组合在一起形成原始测试图像? clc; clear all; close all; i1=imread('C:\Users\Admin\Desktop\rough\Capture1.png'); i1=rgb2gray(i1); f1=fftn(i1); mag1=abs(f1); s=log(1+fftshift(f1)); phase1=angle(f1); r1=ifftshift(ifftn(mag1)); r2=ifftn(exp(1i*phase1)); figure,imshow(i1); figure,imshow(s,[]); figure,imshow(uint8(r1)); figure,imshow(r2,[]); r2=histeq(r2); r3=histeq(uint8(r2)); figure,imshow(r2); figure,imshow(r3);

2
将Gabor滤镜应用于输入图像
我尝试应用具有特定比例的Gabor滤波器(根据我的lambda和sigma的值,所以它是(7x7)并针对4个方向(0,,ππ4π4\frac{\pi}{4}和3ππ2π2\frac{\pi}{2})输入灰度图像。3π43π4\frac{3\pi}{4} 在我的代码中,实现了三个步骤: 创建Gabor过滤器 读取RGB图像,然后将其转换为灰度,最后转换为两倍。 将创建的gabor应用于输入图像(在这里,我不确定我的代码是否正确,这就是为什么我需要您的意见) 1)--------------创建Gabor滤镜(大小= 7x7和4个方向) %define the five parameters theta=....; %either 0 or pi/4 or pi/2 or 3pi/4 lambda=3.5; gamma=0.3; sigma=2.8; psi=0; sigma_x = sigma; sigma_y = sigma/gamma; nstds = 5; xmax = max(abs(nstds*sigma_x*cos(theta)),abs(nstds*sigma_y*sin(theta))); xmax = ceil(max(1,xmax)); ymax = max(abs(nstds*sigma_x*sin(theta)),abs(nstds*sigma_y*cos(theta))); ymax = ceil(max(1,ymax)); xmin = -xmax; ymin = …


3
MATLAB:
在MATLAB中,fft和/或ifft函数的输出通常需要进行额外的处理,然后再考虑进行分析。 我听过很多关于正确的观点的意见: 缩放比例 Mathworks声明fft和ifft函数基于以下方程式: X[k]x[n]=11⋅∑n=1Nx[n]⋅e−j⋅2π⋅(k−1)⋅(n−1)N,where1≤k≤N=1N⋅∑k=1NX[k]⋅e+j⋅2π⋅(k−1)⋅(n−1)N,where1≤n≤NX[k]=11⋅∑n=1Nx[n]⋅e−j⋅2π⋅(k−1)⋅(n−1)N,where1≤k≤Nx[n]=1N⋅∑k=1NX[k]⋅e+j⋅2π⋅(k−1)⋅(n−1)N,where1≤n≤N\begin{align} X[k] &= \frac{1}{1} \cdot \sum_{n=1}^{N} x[n] \cdot e^{\frac{-j \cdot 2 \pi \cdot (k-1) \cdot (n-1)}{N}}, \quad\textrm{where}\quad 1\leq k\leq N\\ x[n] &= \frac{1}{N} \cdot \sum_{k=1}^{N} X[k] \cdot e^{\frac{+j \cdot 2 \pi \cdot (k-1) \cdot (n-1)}{N}},\quad \textrm{where}\quad 1 \leq n\leq N \end{align} 按信号长度缩放 我的同伴通常将数据缩放在处理后立即生效。 (在缩放之前,我们不考虑原始数据。)1N1N\small \frac{1}{N}fftfft%%执行 X_f …
11 matlab  fft  ifft 

1
将频率从
在MATLAB中,我必须通过截止频率来设计滤波器。但是这个截止频率是每个样本的弧度。如何将模拟截止频率转换为MATLAB所需的每个样本弧度? 赫兹赫兹\textrm{Hz}
11 matlab  sampling 

3
如何测量曲线之间的一致性?
我有一段时间内的RSSI期望值的值(如下图所示),我想将其与测量的RSSI值进行比较。我一直在寻找一种量化它的方法,这样我可以更改参数并能够比较/对比不同的方法。 在我的脑海中,这是一个很难解决的问题,因为我不知道如何比较信号,却不考虑信号的大范围(整体形状)和小范围(个体波动)。 例如,这是一组信号的图: 在图像中,我可以看到红色测量信号大致遵循模型,但是它在模拟模型的某些正弦品质(在某些地方)方面也做得不错。有什么想法吗? <>为了响应小插图的评论(这似乎是合理的),我对两个值进行了比较,并绘制了abs(fft(diff))并得到: 我不知道该怎么做。由于我们没有实际的频率,因此我不确定如何缩放轴,如果确定,您将使用什么度量标准?

2
分割半透明的材料,例如玻璃
我完全陷入关于玻璃物体分割的问题。我需要使对象尽可能精确。我的方法是不同的。首先,我尝试删除背景,以便仅保留一些清晰的轮廓。但这仅适用于具有尖锐边缘/渐变的对象。否则,对象本身也将被删除。我张贴了两个不同的图像。 我试图通过形态学操作(例如灰度膨胀和其上的分界线)去除背景。但这并没有太大帮助。之后,我尝试使用k = 3的k均值来使修改后的背景与玻璃的灰度和黑色值分开。在某些情况下,这并不成功,但总体/平均而言却并非如此。我还尝试使用整体模糊的滤镜进行Canny边缘检测,但这导致以开放轮廓,大量噪点等形式出现的结果较弱。 Canny具有自动阈值结果: testimg = imread('http://i.imgur.com/huQVt.png'); imshow(testimg) imedges = edge(testimg,'canny'); imshow(imedges); 第二张图片也一样。 如您所见,玻璃内部和外部都有大量噪声,并且玻璃边缘的边缘加倍。即使边缘有缝隙。 因此,我需要您的建议以获取一种通用的方法来处理半透明材料的问题,而不仅仅是这两个图像。 1)在不损坏对象的情况下移除背景的其他想法? 2)其他使对象与背景分离的分割方法? 如果可能,则使用Matlab,IPT或统计工具箱提示。任何其他提示也欢迎! 谢谢您的提前答复。真诚的

1
使用Matlab进行肝分割的自适应阈值
我需要使用自适应阈值技术从腹部CT图像中分割肝脏。但是我将整个前景与背景分开了。我只需要分离前景的肝脏部分。在http://www.ijcaonline.org/casct/number1/SPE34T.pdf中查看pdf文件。 我需要一个类似于图6所示的输出。 我在这里附上我的编码。请帮我。 %testadaptivethresh.m clear;close all; im1=imread('nfliver2.jpg'); bwim1=adaptivethreshold(im1,11,0.03,0); figure,imshow(im1); figure,imshow(bwim1); imwrite(bwim1,'at2.jpg'); function bw=adaptivethreshold(IM,ws,C,tm) %ADAPTIVETHRESHOLD An adaptive thresholding algorithm that seperates the %foreground from the background with nonuniform illumination. % bw=adaptivethreshold(IM,ws,C) outputs a binary image bw with the local % threshold mean-C or median-C to the image IM. % ws is …

1
超声波扬声器校准和发射校准信号
我正在尝试校准超声波扬声器,以发出可预测的信号,但可惜我一直遇到麻烦,这可能是由于缺乏DSP-fu所致。 一点背景 我希望能够播放尽可能接近我已校准的录音的声音。据我了解的理论,我需要找到扬声器的传递函数,并解卷积我想随其发出的信号。像这样(在频域中): X -> H -> XH 其中X是所发射的信号H是扬声器传递函数和XH是X倍H。./现在除法()应该给我H。 现在,为了发射校准信号,应将其除以H: X/H -> H -> X 做了什么 在三脚架上相隔1 m放置扬声器和已校准的麦克风。 记录了30多次150KHz-20KHz,20ms长的线性扫描,并以500 KS / s的速度记录。 使用下面的Matlab / Octave脚本对齐和平均后的信号,在该脚本下可以看到生成的信号。 files = dir('Mandag*'); rng = [1.5e6, 1.52e6]; [X, fs] = wavread(files(1).name, rng); X = X(:,1); for i=2:length(files) [Y, fs] = wavread(files(i).name, rng); sig = Y(:,1); …


1
如何自动分类在不同位置测得的信号峰值?
我有麦克风在空间中许多不同位置上随时间测量声音。所记录的声音全部源自空间中的相同位置,但是由于从源点到每个麦克风的路径不同;信号将(时间)偏移和失真。已经使用先验知识来尽可能地补偿时间偏移,但是数据中仍然存在一些时间偏移。测量位置越近,信号越相似。 我对自动分类峰感兴趣。我的意思是说,我正在寻找一种算法,“看”下图中的两个麦克风信号,并从位置和波形“识别”出两个主要声音并报告其时间位置: sound 1: sample 17 upper plot, sample 19 lower plot, sound 2: sample 40 upper plot, sample 38 lower plot 为此,我计划在每个峰周围进行Chebyshev展开,并使用Chebyshev系数的向量作为聚类算法(k均值?)的输入。 作为示例,以下是在两个峰值(蓝色圆圈)附近的9个样本(红色)上的5个切比雪夫序列对两个附近位置(蓝色)测得的时间信号的一部分: 近似值非常好:-)。 然而; 上图的切比雪夫系数为: Clu = -1.1834 85.4318 -39.1155 -33.6420 31.0028 Cru =-43.0547 -22.7024 -143.3113 11.1709 0.5416 下图的切比雪夫系数为: Cll = 13.0926 16.6208 -75.6980 -28.9003 0.0337 Crl =-12.7664 …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.