Перемещающиеся сетки MATLAB

#matlab #matrix

#matlab #матрица

Вопрос:

Я хочу создать «перемещающуюся сетку» MATLAB. На самом деле, мне пришлось выбрать другую команду MATLAB вместо того, linspace чтобы строить свою сетку для любой k . Возможно ли это с помощью команды MATLAB?

 for k=1:5
    a=0;
    b(k)=k.*3;
    x=linspace(0,b(k),10);
    y=linspace(0,30,10);
    for z=1:length(x)
        for t=1:length(y)
            A(z,t,k)=x(z).*exp(-y(t)); 
        end
    end
end
  

Спасибо за любую помощь,

Комментарии:

1. Какую проблему вы пытаетесь решить? Вы сказали, что, возможно, linspace это неуместно, но какова цель этого скрипта matlab?

2. Я хочу использовать для разных k разные сетки. В моем примере выше я попытался использовать для k = 1 сетку между 0<x<b (1) и для k = 2 0<x<b (2) и т.д. Для простоты я выбрал фиксированную сетку на y .

Ответ №1:

 X = linspace(0,3,10);
XX(1,:,:) = bsxfun(@times,X,(1:5)')';
Y = exp(-linspace(0,30,10));
B = bsxfun(@times,Y',XX);
B = permute(B,[2,1,3]);
  

Ответ №2:

Ваш текущий код работает нормально, поэтому я не уверен, в чем вопрос… Вот немного более простая реализация:

 b = (1:5).*3;
A = zeros(10,10,5);
for k=1:5
    [X,Y] = ndgrid(linspace(0,b(k),10), linspace(0,30,10));
    A(:,:,k) = X.*exp(-Y);
end
  

Если вы также хотите, чтобы y-пределы также изменялись, процесс аналогичен; у вас будет два цикла, а результатом A будет 4D-матрица