我有一个文本文件,想将其导入MATLAB并将其列为一个列表:
Person1
name = steven
grade = 11
age= 17
Person2
name = mike
grade = 9
age= 15
Person3
name = taylor
grade = 11
age= 17
Run Code Online (Sandbox Code Playgroud)
上面有几百个条目.每个都用空行分隔.我想我可以扫描文本,使每一个空白行之间的信息添加到列表中的项目.我也希望能够通过名称到每个人抬头一旦我有类似下面的列表.
我想要的东西:
x = [Person1 Person2 Person3
name = steven name = mike name = taylor
grade = 11 grade = 9 grade = 11
age = 17 age = 15 age = 17]
Run Code Online (Sandbox Code Playgroud)
这似乎很直接,但到目前为止我一直遇到麻烦.我可能会忽略一些事情.任何人有任何想法或建议?
我需要计算一些变量的均值,标准差和其他值,我想知道如何使用循环来获得优势.我有5个数据电极.所以要计算每个的平均值,我这样做:
mean_ch1 = mean(ch1);
mean_ch2 = mean(ch2);
mean_ch3 = mean(ch3);
mean_ch4 = mean(ch4);
mean_ch5 = mean(ch5);
Run Code Online (Sandbox Code Playgroud)
我想要的是能够将代码压缩成一行左右.我试过的代码不起作用:
for i = 1:5
mean_ch(i) = mean(ch(i));
end
Run Code Online (Sandbox Code Playgroud)
我知道这段代码是错误的,但它传达了我想要完成的想法.我想最终得到5个由循环命名的独立变量或一个包含所有5个变量的单元数组,以便于调用.我知道必须有一种方法来编写这段代码我只是不知道如何实现它.
我在我正在处理的代码中有一行代码:
feval('func_name', myArg);
Run Code Online (Sandbox Code Playgroud)
它有效,但我想知道它在哪里func_name.我无法介入feval,看看它在哪里找到func_name.代替(或除)只是做func_name,我怎么能得到MATLAB告诉我在那里找到了吗?
我想知道这是否可行.我的代码看起来像这样:
indexStop = find(firstinSeq(x,4) ~= ...
littledataPassed(y:length(littledataPassed),4), 1, 'first');
for z= 0:(n-1)
indexProcess = find((littledataPassed(y:y+indexStop-1,6) == 1 & ...
littledataPassed(y:y+indexStop-1,2) == firstinSeq(x,2) & ...
littledataPassed(y:y+indexStop-1,5) == z), 1, 'first');
if isempty(indexProcess)
msgLength[n](countmsgLength[n],:)= [firstinSeq(x,:) [0 0 0 0 0 0]];
else
msgLength[n](countmsgLength[n],:)= [firstinSeq(x,:) ...
littledataPassed(y+indexProcess-1,:)];
end
countmsgLength[n]= countmsgLength[n] + 1;
end
Run Code Online (Sandbox Code Playgroud)
我希望在任何地方将读取[n]切换到实际值n,这样我就可以使用它将数据添加到格式的九个不同变量中msgLength#.我试过搜索教程,但没有看到任何关于这个主题的内容.
我有一个自定义函数,它返回0或1取决于两个给定的输入:
function val = myFunction(val1, val2)
% logic to determine if val=1 or val=0
end
Run Code Online (Sandbox Code Playgroud)
如何在x,y由以下meshgrid生成的坐标上创建函数的等高线图?
meshgrid(0:.5:3, 0:.5:3);
Run Code Online (Sandbox Code Playgroud)
该图仅显示功能的位置0或1等高线图上.
我正在评估一个简单的函数:
y = (2*x)/sqrt( 1 + x.^2 );
Run Code Online (Sandbox Code Playgroud)
其中x包含大约100个值的向量在哪里.但是,y在这种情况下,MATLAB 等于单个标量值.如果我做:
y = 2*x;
Run Code Online (Sandbox Code Playgroud)
我y按预期得到了一个值向量.如果我做:
y = x.^2;
Run Code Online (Sandbox Code Playgroud)
我也y按预期得到了一个值向量.
为什么上面的等式y = (2*x)/sqrt( 1 + x.^2 );给出单个值而不是值向量?
我将矩阵保存到这样的文件:
save(filepath, 'mtrx', '-ascii');
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉MATLAB写0而不是0.0000000e+000值?这将是很好的,因为它会更快更容易地看到哪些值与零不同.
如何.^在MATLAB中重新定义指数函数?从:
x.^y
Run Code Online (Sandbox Code Playgroud)
至:
sign(x).*abs(x.^y))
Run Code Online (Sandbox Code Playgroud) 如何转换图像的RGB直方图以创建显示组合颜色以及正确颜色波长范围的直方图?
示例代码:
pkg load image
f=imread('/tmp/marbles.jpg');
f=uint8(f); %need to convert back to uint8 to show picture
%Split into RGB Channels
f_red = f(:,:,1);
f_green = f(:,:,2);
f_blue = f(:,:,3);
%Get histValues for each channel
[y_f_red, x] = imhist(f_red);
[y_f_green, x] = imhist(f_green);
[y_f_blue, x] = imhist(f_blue);
subplot (2,1,1); imshow(f);
subplot (2,1,2); plot(x, y_f_red, 'r', x, y_f_green, 'g', x, y_f_blue, 'b');
Run Code Online (Sandbox Code Playgroud)
示例图像以及代码生成的单独RGB直方图:
我试图让直方图看起来像下面的图像,但颜色从红色变为蓝色:
另一个图片示例:
PS:我使用的Octave 4.0与MATLAB非常相似.