假设你是一个新的程序员,你做的事情就像......
%...la da da
%...programming away
if such && such
clear = 1;
else
clear = 0;
end
Run Code Online (Sandbox Code Playgroud)
或者以其他方式,为变量clear赋值.
有没有办法"清除" clear?
clearvars不起作用.单击工作区变量并手动单击删除确实有效,但我认为这是作弊.
假设我有some_fun做了一些复杂的工作.
function foo = some_complicated_fun(x,y,z,verbosity)
Run Code Online (Sandbox Code Playgroud)
我已经在这段代码中编写了很多调试打印件,但是avg用户可能没有兴趣看到它是否正常工作.无论如何都会打印错误语句(不够args等).
我目前编写函数的方法是:
function foo = some_complicated_fun(x,y,z,verbosity)
(x,y,z,verbosity) = parse_args(x,y,z,verbosity); % parse args, check nargin, etc
for i=1:5,
% whatever
% do some work with x,y,z
% blah blah
if verbosity
fprintf('Now on iteration %i\n',i); % basic print
end
% or, with mutiple levels:
if verbosity == 1;
fprintf('Now on iteration %i\n',i); % basic print
end
if verbosity == 2;
fprintf('x = %f,y = %f,z=%f %i\n',x,y,z); % more information
end
% do more work
end
Run Code Online (Sandbox Code Playgroud)
我不喜欢用if语句来做它,因为它使代码混乱,但我想不出任何其他方式.一个班轮越来越好: …
我有一个代表电机声音的音频文件.我一直在读"正常"fft没有对机器进行有价值的分析,我应该使用Order分析来描述机器的"行为".我在增加速度的同时记录了它的声音,我将记录放在一起并计算出它的频谱.这是代码:
%% read the Audio file and plot its
clear, clc , clf;
M = 512;
k =1
data= 0 ;
for i =100:5:180
fileName =['A10_uSp0_Mic100k_2nd_V_',int2str(i),'.wav']
[x(:,k),Fs] = audioread(fileName);
k = k+1 ;
end
for i = 1:length(x(1,:))
data = [data(:);x(:,i)];
end
k = length(x(1,:));
while k ~= 2
data = [data(:);x(:,k)];
k = k -1;
end
spectrogram(data,hamming(M),M/2,0:20:4000,Fs,'yaxis');
Run Code Online (Sandbox Code Playgroud)
结果如下:

正如您可能看到的那样,我为每个时间点将机器的速度提高了5.我的问题是如何计算该系统的订单分析!?非常感谢您的帮助!
我发现自己需要对图像中的每个像素进行最小二乘(或类似的基于矩阵的操作).每个像素都有一组与之关联的数字,因此可以将其排列为3D矩阵.
(可以跳过下一位)
通过最小二乘估计快速解释我的意思:
假设我们有一些二次系统,它由Y = Ax ^ 2 + Bx + C建模,我们正在寻找那些A,B,C系数.使用X的几个样本(至少3个)和相应的Y,我们可以通过以下方式估算它们:
X = [x(:).^2 x(:) ones(10,1)];Y = y(:);coeffs = (X'*X)^(-1)*X'*Y;如果您愿意,可以自己尝试:
A = 5; B = 2; C = 1;
x = 1:10;
y = A*x(:).^2 + B*x(:) + C + .25*randn(10,1); % added some noise here
X = [x(:).^2 x(:) ones(10,1)];
Y = y(:);
coeffs = (X'*X)^-1*X'*Y
coeffs =
5.0040
1.9818
0.9241
Run Code Online (Sandbox Code Playgroud)
如果我迷失了你,请继续注意
*MAJOR REWRITE*我已修改为使其接近我所拥有的真正问题,并仍然使其成为最小的工作示例.
问题设置
%// Setup
xdim …Run Code Online (Sandbox Code Playgroud) 我正在开发一种工具,可以让您在 3D“体积”上圈出/包围事物。我想通过标记“切片”1 和 3 并从该信息“填充”切片 2 来节省时间。
两个简单的解决方案是:
1. slice2 = slice1 AND slice3 (gets the overlap between the two)
2. slice2 = slice2 OR slice3 (true for any pixel true in either image)
Run Code Online (Sandbox Code Playgroud)
这些都很好而且很快,但我更喜欢通过使形状在两者之间进行某种平均/插值来做一些更智能的事情。您可以将其想象为试图找到连接海平面飞机和空中高原的悬崖面。
示例:填充此 3d 矩阵中的切片 2-4。(使用创建montage)

随意想出全新的想法。我将把我的想法放在下面。
我想到的一些东西可能会对你(回答者)有所帮助,但我未能成功使用。
到目前为止我得到的最好的:
添加图像。给你重叠和两个周长:
- 一个内周长(其内部肯定是 1)
- 和一个外周长(其内部是有问题的)。
您还可以屏蔽 >0 AND <2 的区域,这是该可疑区域的屏蔽。在两周边图像上
运行 a并遮罩:bwdist
![蒙版 bwdist 图像] 2
但不知道如何从这里出发。沿着该区域绘制“最大”轮廓的线是可行的,但我不确定如何稳健地做到这一点。
欢迎任何关于修正我的想法或任何其他想法的想法!
谢谢。
我是python的新手,但我有很多MATLAB和C的经验.
我需要做的是解析特定目录中文件的文件名,根据文件名中的字段将它们分成组,并在这些组中执行操作.
具体来说,文件名是:
PROJECT-x-SUBJECT-x-SESSION-x-TYPE.extension
Run Code Online (Sandbox Code Playgroud)
其中'-x-'被故意插入为字段分隔符.我需要对共享相同PROJECT-x-SUBJECT-x-SESSION组件的每组文件执行操作.
__ _ ____ 我最好的尝试如下:__ _ __ _ __
我可以通过以下方式一次解析每个文件:
dirList=os.listdir(directory)
for fname in dirList:
# kill extension
ext = os.path.splitext(fname)
# get the 4 fields
labels=ext[0].split('-x-')
PROJECT_list.append(labels[0])
SUBJECT_list.append(labels[1])
...
Run Code Online (Sandbox Code Playgroud)
...这反映了我对如何组织这些东西的唯一想法:通过创建4个列表并为每个文件名附加到它们.
然后用我的4(有序?)列表,我可以调用类似的东西:
from collections import Counter
c=Counter(SESSION_list)
list(c)
Run Code Online (Sandbox Code Playgroud)
那么至少我有一个唯一的SESSION名称列表
建议?我可以继续,但因为我真的需要一个起点,我认为这已经足够了.
多谢你们.