在MATLAB中,我可以在一个文件中定义多个函数,只有第一个定义的函数在该文件外部可见.或者,我可以将每个函数放在自己的文件中,并通过路径使它们全局可见.我正在编写一个菜单驱动的应用程序,其中每个菜单项运行不同的功能.目前,这些都在一个大文件中,越来越难以导航.我想做的是将相关函数组放入单独的文件中.
我想我可以通过将所有子函数放入一个单独的目录然后将目录添加到我的父函数中的路径来做这样的事情,但这感觉有点混乱和不优雅.
任何人都可以提出更好的建议吗?
注意:我最熟悉MATLAB 2006,但我正在升级到MATLAB 2009.
我有一个等高线图,我正在使用当前渲染:
set(gcf, 'renderer', 'zbuffer');
Run Code Online (Sandbox Code Playgroud)
但它在情节中给了我这条粗红线,我不知道如何摆脱它.我尝试过切换到:
set(gcf, 'renderer', 'opengl');
Run Code Online (Sandbox Code Playgroud)
但质量很差,我真的需要高质量的图像.有什么建议?
我在MATLAB中有一个矩阵,我想从中获取每个其他条目:
a =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
Run Code Online (Sandbox Code Playgroud)
而且我要:
result =
1 9
3 11
Run Code Online (Sandbox Code Playgroud)
如果没有for循环,我怎么能这样做?
我想在Matlab或Octave中添加两个不同长度的向量.例如
aa = [1 2 3 4];
bb = [100 100];
Run Code Online (Sandbox Code Playgroud)
哪个应该导致包含的向量cc
cc = [101 102 3 4]
Run Code Online (Sandbox Code Playgroud)
任何人都可以弄清楚如何做到这一点?
更新:这是我最终用于信号的代码,然后我将其转换为灰度图像.
load train;
t = y;
load chirp;
c = y;
tc = c + [t; zeros(length(c) - length(t),1)];
plot(1:length(tc),tc)
Run Code Online (Sandbox Code Playgroud)
非常感谢大家=)
谁能告诉我是否有办法(在MATLAB中)检查某个值是否等于另一个数组中存储的任何值?
我打算使用它的方法是检查一个矩阵中的元素索引是否等于另一个数组中存储的值(其中存储的值是满足特定条件的元素的索引).
因此,如果符合条件的元素的索引存储在下面的矩阵中:
criteriacheck = [3 5 6 8 20];
Run Code Online (Sandbox Code Playgroud)
遍历主数组(调用array)并检查索引是否匹配:
for i = 1:numel(array)
if i == 'Any value stored in criteriacheck'
%# "Do this"
end
end
Run Code Online (Sandbox Code Playgroud)
有没有人知道我怎么会这样做?
我经常发现自己想要使用自定义函数在一个维度上折叠n维矩阵,并且无法弄清楚是否有可用于执行此操作的简洁咒语.
例如,在解析图像时,我经常想做这样的事情.(注意!仅举例说明.我知道rgb2gray这个具体案例.)
img = imread('whatever.jpg');
s = size(img);
for i=1:s(1)
for j=1:s(2)
bw_img(i,j) = mean(img(i,j,:));
end
end
Run Code Online (Sandbox Code Playgroud)
我想表达的是:
bw = on(color, 3, @mean);
Run Code Online (Sandbox Code Playgroud)
要么
bw(:,:,1) = mean(color);
Run Code Online (Sandbox Code Playgroud)
有一个简短的方法吗?
mean已经这样做了; 我希望能够为我编写的任何函数执行此操作.例如,
...
filtered_img(i,j) = reddish_tint(img(i,j,:));
...
Run Code Online (Sandbox Code Playgroud)
哪里
function out = reddish_tint(in)
out = in(1) * 0.5 + in(2) * 0.25 + in(3) * 0.25;
end
Run Code Online (Sandbox Code Playgroud) 我从微处理器获得RGB矩阵,输出RGB565格式的图像.我想把它读入MATLAB,将其转换为RGB24格式,然后输出图像.我该怎么做呢?
我有一个A这样的矩阵
A=
4.0000 120.0000 92.0000 0 0 37.6000 0.1910 30.0000
10.0000 168.0000 74.0000 0 0 38.0000 0.5370 34.0000
10.0000 139.0000 80.0000 0 0 27.1000 1.4410 57.0000
1.0000 139.0000 60.0000 23.0000 846.0000 30.1000 0.3980 59.0000
5.0000 136.0000 72.0000 19.0000 175.0000 25.8000 0.5870 51.0000
7.0000 121.0000 0 0 0 30.0000 0.4840 32.0000
Run Code Online (Sandbox Code Playgroud)
我想做两件事:
所以期望的结果矩阵将是:
A=
4.0000 0.0000 92.0000 0 0 37.6000 0.1910 30.0000
0.0000 4.0000 74.0000 0 0 38.0000 0.5370 34.0000
0.0000 1.0000 80.0000 0 0 27.1000 1.4410 …Run Code Online (Sandbox Code Playgroud) 以下命令使用方形标记点,但不会输入值(例如(21,0),...).
X = [21 8 2 1 0]
Y = [0 1 2 3 4]
plot(X,Y,'k-s')
Run Code Online (Sandbox Code Playgroud)
我应该添加哪个参数,以便所有5点值出现在图上?
由于值可以更改,因此无法逐个输入值,因为它们是随机数.
如何更改格式以不显示如下矩阵:
1.0e+003 *
3.1251 0 0 0 0 0 0 0 0 0
0 3.1251 0 0 0 0 0 0 0 0
0 0 3.1251 0 0 0 0 0 0 0
0 0 0 3.1251 0 0 0 0 0 0
0 0 0 0 3.1251 0 0 0 0 0
0 0 0 0 0 3.1251 0 0 0 0
0 0 0 0 0 0 3.1251 0 0 0
0 0 0 0 0 …Run Code Online (Sandbox Code Playgroud)