小编gno*_*ice的帖子

如何在MATLAB中模拟"包含"行为?

在MATLAB中,我可以在一个文件中定义多个函数,只有第一个定义的函数在该文件外部可见.或者,我可以将每个函数放在自己的文件中,并通过路径使它们全局可见.我正在编写一个菜单驱动的应用程序,其中每个菜单项运行不同的功能.目前,这些都在一个大文件中,越来越难以导航.我想做的是将相关函数组放入单独的文件中.

我想我可以通过将所有子函数放入一个单独的目录然后将目录添加到我的父函数中的路径来做这样的事情,但这感觉有点混乱和不优雅.

任何人都可以提出更好的建议吗?

注意:我最熟悉MATLAB 2006,但我正在升级到MATLAB 2009.

matlab

7
推荐指数
2
解决办法
8556
查看次数

MATLAB图中的渲染和图像质量

我有一个等高线图,我正在使用当前渲染:

set(gcf, 'renderer', 'zbuffer');
Run Code Online (Sandbox Code Playgroud)

但它在情节中给了我这条粗红线,我不知道如何摆脱它.我尝试过切换到:

set(gcf, 'renderer', 'opengl');
Run Code Online (Sandbox Code Playgroud)

但质量很差,我真的需要高质量的图像.有什么建议?

matlab rendering figures

7
推荐指数
1
解决办法
2万
查看次数

如何在MATLAB中对矩阵进行采样?

我在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 matrix downsampling

7
推荐指数
2
解决办法
1万
查看次数

如何添加不同长度的向量?

我想在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 vector octave

7
推荐指数
2
解决办法
2万
查看次数

查找值是否等于MATLAB中任何数组元素的值

谁能告诉我是否有办法(在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)

有没有人知道我怎么会这样做?

arrays comparison matlab

7
推荐指数
2
解决办法
5万
查看次数

在MATLAB中在数组的单个维度上分配函数?

我经常发现自己想要使用自定义函数在一个维度上折叠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)

arrays matlab function matrix multidimensional-array

7
推荐指数
2
解决办法
2297
查看次数

如何在MATLAB中转换RGB565和RGB24图像格式?

我从微处理器获得RGB矩阵,输出RGB565格式的图像.我想把它读入MATLAB,将其转换为RGB24格式,然后输出图像.我该怎么做呢?

rgb matlab image-manipulation image image-formats

7
推荐指数
1
解决办法
5589
查看次数

如何根据条件替换某些列值?

我有一个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)

我想做两件事:

  1. 将第一列的值大于5替换为0.
  2. 在第二列中,如果值在121-130范围内,则将其替换为0.如果它们在131-140范围内,则替换为1,141-150乘2,151-160乘3等.

所以期望的结果矩阵将是:

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)

matlab matrix

7
推荐指数
1
解决办法
1万
查看次数

使用MATLAB图中的值标记点

以下命令使用方形标记点,但不会输入值(例如(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点值出现在图上?

由于值可以更改,因此无法逐个输入值,因为它们是随机数.

matlab plot

7
推荐指数
1
解决办法
4万
查看次数

如何在MATLAB中控制双矩阵的显示?

如何更改格式以显示如下矩阵:

 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)

format matlab matrix display

7
推荐指数
1
解决办法
1250
查看次数